User-defined field variables (TBFIELD) are supported for the following material data tables:
Material Model |
TB,Lab Value |
---|---|
Creep | CREEP |
Mass density | DENS |
Elasticity | ELASTIC |
Extended Drucker-Prager | EDP |
Hyperelasticity | HYPER |
Nonlinear plasticity | PLASTIC |
Rate-dependent plasticity | RATE |
Hill Plasticity | HILL |
Thermal expansion | CTE |
Thermal properties | THERM |
Valid user-defined field variables are UF01 through UF09.
Use your field variables with initial state loading to define a field of material properties. When you define a field variable as node-based field data over the finite element model (INISTATE), the solver reads the initial-state data at the nodes and determines the correct value of the material property necessary for performing the finite element calculations. Initial state loading with user-defined variables defines material models as continuous functions over the models, thereby facilitating advanced modeling such as functionally-graded composite materials.
Nonlinear material models sometimes include both linear and nonlinear parameters in the equation. For example, in the equation Y = a * xb, a is a linear parameter and b is a nonlinear parameter. You might have values of a and b at two states, UF01 = T1 and UF01 = T3. It may not always be meaningful to interpolate values of b to obtain coefficients at an intermediate field variable value UF01 = T2. Maintain constant nonlinear parameter values at all states during the curve-fitting process for these material models.
The following example input shows how to define Young’s Modulus as a function of global Y using the elastic material model and the node-based initial state capability:
Example 9.1: Defining Young’s Modulus as Function of Global Y
TB,ELASTIC,1 TBFIELD,UF01,0.0 TBDATA,1,1e6,0.3 TBFIELD,UF01,1.0 TBDATA,1,1e7,0.3 ! Define a UF01 field over the finite element model INISTATE,SET,NODE,1 INISTATE,SET,DTYP,UF01 *GET,NumNodes,node,,num,max *DO,iI,1,NumNodes iExis=NSEL(iI) *IF,iExis,eq,1,then yval=NY(iI) INISTATE,DEFINE,iI,,,,yval *ENDIF *ENDDO
During the solution, you can edit any initialized user-defined field variables via
the
UserFld
subroutine. Following is a description of the API:
! Routine to read current value ! Call fldgetvar( variable type, curvalue ) Variable type can be any of the user field variables 1-10 and are names such as FLD_USER_1_TYPE, FLD_USER_2_TYPE, … FLD_USER_9_TYPE The current value of the field variable is returned in the double precision number curvalue ! ! ! Routine to update current value ! Call fldsetvar( variable type, curvalue ) Variable type can be any of the user field variables 1-10 and are names such as FLD_USER_1_TYPE, FLD_USER_2_TYPE, … FLD_USER_9_TYPE The current value of the field variable is set to the double precision number curvalue provided/newly calculated by the user
For more information, see Subroutine userfld (Update User-Defined Field Variables) in the Programmer's Reference
You can use any appropriate API subroutine in the Programmer's Reference to query and update the user-defined field variables.