BASIC_NL_BEHAVIOR#

The principle functionality of behaviors in the Z-set FEM mode may be summarized by the following schematic:

../../_images/Problem.svg

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

@Class

declares a user-class

@SetUp

method which is called before the calculation begins; one may set up variable storage here for example

@Integrate

user-integrate function; used for behaviors which are not using the standard Runge-Kutta or \(\theta\)-method integration

@Derivative

explicit integration function calculating variable time derivatives, used by the standard Runge-Kutta implementation

@CalcGradF

implicit integration function for the variable residual and Jacobian matrix, used by the standard \(\theta\)-method implementation

@UserRead

extra read function to search user defined syntax

@PreStep

this method performs calculations before the local integration begins

@PostStep

this method is used to perform calculations after the local integration is finished (was called @StrainPart)

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

psz

symmetric tensor (problem) size

usz

unsymmetric tensor size

unit

deviator multiplier \(\ten s^\prime = {\tt unit}\cdot\ten \sigma\)

m_tg_matrix

the tangent matrix to be returned

m_flags

behavior flags

Time_ini

initial time of the increment

Time

time at the ending of the increment

Dtime

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