BASIC_NL_BEHAVIOR#
The principle functionality of behaviors in the Z-set FEM mode may be summarized by the following schematic:
Here, the last FEM solution is at time \(t\), which is to be
advanced in the global solution iterations to time \(t+dt\). The
ZebFront mode for FEM material behaviors therefore is centralized for
this functionality. The internal calling sequence will be such that a
method integrate
will be called, which in turn may call several
different methods. The ZebFront may be used to support solely the
integrate
method, allowing the user to re-define the entire model.
Complicated multi-function programs may therefore be created, while
taking advantage of the programs coefficient and model variable
management capabilities. More often than not however, a model may be
implemented more simply using the standard integration formats
(Runge-Kutta or \(\theta\)-method integration).
A summary follows of the pre-processor directives available in material behaviors:
CODE |
DESCRIPTION |
---|---|
|
declares a user-class |
|
method which is called before the calculation begins; one may set up variable storage here for example |
|
user-integrate function; used for behaviors which are not using the standard Runge-Kutta or \(\theta\)-method integration |
|
explicit integration function calculating variable time derivatives, used by the standard Runge-Kutta implementation |
|
implicit integration function for the variable residual and Jacobian matrix, used by the standard \(\theta\)-method implementation |
|
extra read function to search user defined syntax |
|
this method performs calculations before the local integration begins |
|
this method is used to perform calculations after the
local integration is finished (was called |
If the user has selected the standard integration methods, the
integrate
method should not be re-defined. The default will
perform some internal set-up operations, and then dispatch control to
the integration method. Integration methods will be selected in the user
input file for each calculation using the *integration
option
under ***material
in ****calcul
. Each method then calls back
on the ZebFront source in the method derivative
or
calc_grad_f
if they have been defined. A model developer is not
required to define all integration methods, only the ones he wishes.
ZebFront will generate automatically default error messages for the
methods not implemented.
Standard methods#
The pre-processor defines a number of class methods which are defined only with pre-processor directives, and without parameters. The absence of parameters allows the pre-processor to change its implementation of the methods without affecting the user program source. Different methods define a different set of variables depending on their application.
Pre-defined variables#
The class creation includes definition of several variables which will be kept up to date in the program. Use of these variables remove dependence on the actual program internals, and therefore assure compatibility with future versions of the code.
CODE |
DESCRIPTION |
---|---|
|
symmetric tensor (problem) size |
|
unsymmetric tensor size |
|
deviator multiplier \(\ten s^\prime = {\tt unit}\cdot\ten \sigma\) |
|
the tangent matrix to be returned |
|
behavior flags |
|
initial time of the increment |
|
time at the ending of the increment |
|
increment of time over the increment |
Gradiant-flux variables#
Previous versions of ZebFront used the reserved names grad
,
dgrad
, and flux
for the imposed variable names. Now that several
gradient-flux variables may be given for a particular problem, these
will be accessed using their names proper. Thus, for a program with the
grad/flux combination of eto
/sig
, one has the variables eto
,
deto
, and sig
directly available.
By default (in the absence of a @Flux
or @Grad
command in the
class declaration) the flux will be a symmetric Cauchy stress tensor
named sig
, while the gradient will be the symmetric small strain
tensor eto
. The names of these variables must be compatible with
the element specification in all applications.
Generated class#
The generated BEHAVIOR
class will follow the generalized syntax:
***behavior
behavior_name modifier
\(~\,\) **
sub_class_type SUB_CLASS
\(~\,\) …
\(~\,\) **model_coef
\(~\,~\,~\,\) cname1 COEFFICIENT
\(~\,~\,~\,\) …
\(~\,~\,~\,\) cnameN COEFFICIENT
\(~\,\) **
user_option
\(~\,~\,~\,\) …
***return
Example#
A class definition of the following type:
@Class PLASTIC_BEHAVIOR : BASIC_NL_BEHAVIOR {
@Name plastic;
@SubClass ELASTICITY elasticity;
@Coefs R0, Q, b;
@tVarInt eel;
@sVarInt epcum;
@tVarAux epi;
};
May accept the following input:
***behavior plastic_behavior
**elasticity isotropic
young 260000.
poisson 0.3
**model_coef
R0 130.
Q 20.0
b 500.0
***return