Z-mat MSC-Marc interface#
Description#
The command described in this chapter allows to use a Z-mat behavior
within a MSC-Marc analysis. The interface with the Z-mat library is
implemented by means of the uvscpl
Marc user subroutine. The choice
of uvscpl
to build the interface, against other candidate
subroutines available to implement user materials, has been motivated by
its flexibility. Note however that Zmarc capabilities are by no means
restricted to time-dependent creep behaviors.
Syntax#
% Zmarc
-j problem [ run_marc options ] \(\hookleftarrow\)
where problem.dat
is the name of an MSC-Marc input data file.
The Zmarc
script is a simple copy of the standard run_marc
script, where commands needed to link automatically the Z-mat package to
build a custom marc
executable have been added. Therefore, standard
options of the run_marc
procedure are also available with the
Zmarc
command.
MSC-Marc Input#
The definition of a material for the Z-mat behaviors always uses an
external file to establish the model components and coefficients. Z-mat
never uses the material parameters defined in the Marc .dat
file.
In the current implementation the definition of the Zmat behavior should
be given in a file named problem.zebulon
.
Several additions to a standard Marc .dat
file are necessary to
activate the use of Zmat. Some of them cannot be accessed by means of
the Mentat graphical interface and should be done directly in the
.dat
file. Those commands are listed hereafter:
Parameters section
The
state vars
command should be added to specify the number of material variables needed by the Zmat behavior. TheZpreload
utility can be used to compute the number of variables required. In any case, Zmat outputs to the.log
file the correspondence between the Marc user state variables and Zmat the behavior components. If not enough state variables are available for the behavior the analysis is stopped. Otherwise a warning is printed if more variables than necessary have been specified.state vars,20,20,
The creep procedure should be activated by means of the
creep
command, even if no creep effects are involved in the analysis. This is needed by Marc, because theuvscpl
user subroutine can only be used within the creep algorithm.creep,0,0,1
Model definition section
The
visco plas
parameter of theisotropic
ororthotropic
command must be selected, to activate the use of material integration by means of theuvscpl
user subroutine. Note that eitherisotropic
ororthotropic
materials can be selected indifferently, since values of the material coefficients given as arguments of these commands are ignored by Zmat, that reads the material definition in a separate problem.zebulon
file.isotropic , 1,visco plas,isotropic,0,0,0,0,material1, 2.E+4,3.E-1,8.E-6,2.E-5,0.0,0.0,0.0,0.0, 1 to 1000
To benefit from the consistent tangent matrix calculated by most Zmat behaviors, and accelerate the convergence of the global equilibrium iterations, the full newton-raphson algorithm should be selected by setting the 6\(^{th}\) parameter of the
control
command to 1.control 1000,10,2,0,0,1,1,0,1,0, 0.001,0.,0.1E-8,0.,0.1,0.,0.1E-4,1.E-12,
Output of material variables to the Marc results file
The
post
command allows to select which material variable should be stored in the results files. In this case the element codes that should be given as argument of thepost
command, is a negative integer value such as-varid
, wherevarid
is the number of the user variable required for output.post 14,16,17,0,0,19,20,0,1,0, 301 461 311 391 -30,,d1 -31,,d2 -32,,d3
The above command adds user variables
30
,31
and32
to the.t16
result file. The corresponding values will then be accessed by the graphical post-processor of Mentat. Within Mentat the names given to those state variables will be respectivelyd1
,d2
andd3
, as defined by thepost
command.Note that this output capability makes use of the user subroutine
plotv
to interpret correctly the user element codes. An appropriateplotv
code is provided in the Zmarc package. However, this means that the user cannot redefine this particular user subroutine for its own purpose.
History definition section
The use of the
auto step
procedure for adaptative load step control is strongly advised. Moreover, starting with Marc2003,auto load
doens’t seem to handle anymore user material implemented with theuvscpl
subroutine. Also, as described in the next section, theenhanced scheme
of this procedure can be used to provide Marc some feedback about local integration results obtained in the Zmat library. This option should then be activated as well by setting the 9\(^{th}\) parameter of the second data block to 1.auto step 0.02,0.4,,,0.0001,0.1,100,6,1, ,10,0,,,,,,,,,2,
Automatic time-stepping and Zmat local integration#
For complex material behaviors and/or large strain increments, non-convergence may occur during integration of the behavior equations by Zmat. Without a proper procedure, such local divergence will cause either premature convergence (especially in the case of anisothermal analysis under purely thermal loadings), or run-away newton iterations until the specified maximum number of recycles is reached and increment cutback eventually occurs.
Unfortunately there is nothing available in uvscpl
(as in other user
material subroutines) to signal a local divergence back to Marc and
force an immediate increment cutback.
However, the enhanced scheme of the auto step
command, that allows
to specify user criteria to control the step-size, may be used to
implement some kind of emergency procedure. The input data necessary to
implement this mechanism from the .dat
file is not trivial, and is
described hereafter:
activate the enhanced scheme of the
auto step
procedure by setting to 1 the 9\(^{th}\) parameter of the second data block,choose to use user criteria as limits (versus targets) by setting to 0 the third parameter of the third data block,
add a criterion on a Zmat variable, that will cause increment cutback in case of its violation during local integration. To select a particular user state variable, a code such as 13x100 + state variable id should be used as first argument of the fourth data block.
auto step
0.02,0.4,,,0.0001,0.1,100,6,1,0
,10,0,,,1.2,,,,,,2,
1330,cmc
10.,0.01
In the above example, the user criterion used to monitor convergence is
defined on user state variable number 30 (element code 1330
). The
criterion defines that this variable at any integration point of the
element set named cmc
, should not increase of a value of more than
10.0
(defined in the fifth data-block) over an increment. If the
increase of the variable exceeds the limit value specified, the
auto step
procedure will discard the load increment, and the step
size will be cut back accordingly.
More precisely, denoting by \(\Delta t\) the current step size, \(\Delta v\) the maximum variation of variable \(v\) found by local integration during the current increment cycle, and \(v_{max}\) the limit value specified, if \(\Delta v > v_{max}\) a new icrement will be attempted with a lower step size calculated as:
.
Additional commands may then be used in the Zmat problem.zebulon
file, to control increment cut-back in case of local divergence. Those
commands are the following ones:
***divergence_variable 30 20.
The above command select variable 30 to monitor local convergence, and
specify that in the event of divergence a \(\Delta v\) value of
20.
should be sent back to Marc (ie. two times the \(v_{max}\)
limit value defined in the auto step
command). Hence the effect will
be to force a division by 2 of the global step size in the event of
local divergence.
When using this scheme, care must be taken to carefully select the
\(v_{max}\) limit value. Typically the value should exceed likely
variations for the variable selected, and the ***divergence_variable
increment value set accordingly to produce an increment cut-back of the
required size.
Example#
The following listing summarizes the options needed in a visco.dat
Marc input file when using the Zmarc interface.
title visco
$ parameters section
...
state var,19,19
creep,0,0,1
end
$ model definition section
...
isotropic
,
1,visco plas,isotropic,0,0,0,0,material1,
20000.,0.3,8.E-6,2.E-5,0.0,0.0,0.0,0.0,
all_element
...
post
14,16,17,0,0,19,20,0,1,0,
301,
311,
-7,,evcum
...
control
100,10,2,0,0,1,1,0,1,0,
0.001,0.,0.1E-8,0.,0.1,0.,0.1E-4,1.E-12,
$ history definition section
auto step
0.02,0.4,,,0.0001,0.1,100,6,1,
,10,0,,,,,,,,,2,
1308,all_element
10.,0.01
...
The Zmat behavior is defined in a separate visco.zebulon
file
included hereafter. The cooresponding model is a typical Chaboche
viscoplasticity model. Note that the value of the young’s modulus will
indeed be 150000. as defined in the Zmat file, and that the value of
20000. given after the isotropic
command of the .dat
file has no
impact whatsoever on the results.
***material
*integration theta_method_a 1. 1.e-9 100
***divergence_variable 8 20.
***behavior gen_evp
**elasticity
young 150000.
poisson 0.3
**potential gen_evp ev
*criterion mises
*flow norton
n 7.
K 1200.
*kinematic nonlinear
C 126000.
D 380.
*isotropic constant
R0 10.
***return
Using the Zpreload utility on the above material file would produce the following output:
$ Zpreload visco.zebulon
Reading behavior in file: visco.zebulon
============================================
Flux Name:
sig11 sig22 sig33 sig12 sig23
sig31
Grad Name:
eto11 eto22 eto33 eto12 eto23
eto31
var_int Name:
eel11(sdv1) eel22(sdv2) eel33(sdv3) eel12(sdv4) eel23(sdv5)
eel31(sdv6)
evcum(sdv7)
al111(sdv8) al122(sdv9) al133(sdv10) al112(sdv11) al123(sdv12)
al131(sdv13)
var_aux Name:
evi11(sdv14) evi22(sdv15) evi33(sdv16) evi12(sdv17) evi23(sdv18)
evi31(sdv19)
============================================
done with material file reading...
Temperature not needed...
...
This allows to select the number of state variables needed by the
behavior (19 variables in the example) that should be given as argument
of the state var
command. State variable number 7 is the cumulated
plastic strain (named evcum
) for this particular Zmat behavior. This
material variable will be stored in the Marc results file using the
appropriate post
elem var code (-7 in this case). This variable is
also used to monitor local divergence (1308
code to define the user
criterion used in the auto step
procedure), and a corresponding
***divergence_variable
is included in the Zmat file to control the
increment cut-back in case of local divergence. Note that Marc always
use the first state variable to store the temperature, such that the
state variable id given by Zpreload must be incremented by one to select
the proper material variable.
Finally, note that this shift in the state variable id, is automatically
taken into account for the post
command (the shift is done in the
plotv
user subroutine included in the Zmarc release).