modify documents
This commit is contained in:
@@ -0,0 +1,428 @@
|
||||
<!-- source-page: 361 -->
|
||||
|
||||
and outputData(io\_trs\_shift\_end)
|
||||
|
||||
return
|
||||
|
||||
end
|
||||
|
||||
# Variables to be defined
|
||||
|
||||
outputData(io\_trs\_shift\_begin)
|
||||
|
||||
The shift function at the beginning of the increment.
|
||||
|
||||
outputData(io\_trs\_shift\_end)
|
||||
|
||||
The shift function at the end of the increment.
|
||||
|
||||
# Variable that can be updated
|
||||
|
||||
statev
|
||||
|
||||
An array containing the user-defined solution-dependent state variables at this point.
|
||||
|
||||
# Variables passed in for information
|
||||
|
||||
nOutput
|
||||
|
||||
Size of array outputData. Currently equal to 2.
|
||||
|
||||
nstatv
|
||||
|
||||
Number of solution-dependent state variables associated with this material.
|
||||
|
||||
networkid
|
||||
|
||||
Network identification number, which identifies the network for which creep is defined.
|
||||
|
||||
coords
|
||||
|
||||
An array containing the current coordinates at this point.
|
||||
|
||||
temp
|
||||
|
||||
Temperature at the end of the increment.
|
||||
|
||||
dtemp
|
||||
|
||||
Increment of temperature.
|
||||
|
||||
nfield
|
||||
|
||||
Number of field variables.
|
||||
|
||||
predef
|
||||
|
||||
An array of interpolated values of predefined field variables at this point at the end of the increment, based on the values read in at the nodes and, optionally, redefined in user subroutine USDFLD.
|
||||
|
||||
dpred
|
||||
|
||||
An array of increments of predefined field variables.
|
||||
|
||||
<!-- source-page: 362 -->
|
||||
|
||||
nprops
|
||||
|
||||
User-specified number of user-defined material properties.
|
||||
|
||||
props
|
||||
|
||||
An array of user-specified property values.
|
||||
|
||||
```cmake
|
||||
i_array(i_trs_kstep)
|
||||
```
|
||||
|
||||
Step number.
|
||||
|
||||
```bazel
|
||||
i_array(i_trs_kinc)
|
||||
```
|
||||
|
||||
Increment number.
|
||||
|
||||
```txt
|
||||
i_array(i_trs_noel)
|
||||
```
|
||||
|
||||
Element number.
|
||||
|
||||
```python
|
||||
i_array(i_trs_npt)
|
||||
```
|
||||
|
||||
Integration point.
|
||||
|
||||
```txt
|
||||
i_array(i_trs_layer)
|
||||
```
|
||||
|
||||
Layer number (for layered solids).
|
||||
|
||||
```txt
|
||||
i_array(i_trs_kspt)
|
||||
```
|
||||
|
||||
Section point number within the current layer.
|
||||
|
||||
niarray
|
||||
|
||||
Size of array i\_array. Currently equal to 6.
|
||||
|
||||
```txt
|
||||
r_array(ir_trs_step_time)
|
||||
```
|
||||
|
||||
Value of step time at the end of the increment.
|
||||
|
||||
```txt
|
||||
r_array(ir_trs_total_time)
|
||||
```
|
||||
|
||||
Value of total time at the end of the increment.
|
||||
|
||||
```txt
|
||||
r_array(ir_trs_creep_time)
|
||||
```
|
||||
|
||||
Value of creep time at the end of the increment.
|
||||
|
||||
```python
|
||||
r_array(ir_trs_timeinc)
|
||||
```
|
||||
|
||||
Time increment.
|
||||
|
||||
nrarray
|
||||
|
||||
Size of array r\_array. Currently equal to 4.
|
||||
|
||||
c\_array(ic\_trs\_material\_name)
|
||||
|
||||
User-specified material name, left justified. Some internal material models are given names starting with the “ABQ\_” character string. To avoid conflict, you should not use “ABQ\_” as the leading string for the material name.
|
||||
|
||||
<!-- source-page: 363 -->
|
||||
|
||||
# ncarray
|
||||
|
||||
Size of array c\_array. Currently equal to 1.
|
||||
|
||||
# Example: Williams-Landel-Ferry shift function
|
||||
|
||||
As an example of the coding of user subroutine UTRSNETWORK, consider the William-Landel-Ferry model to define the shift function. In this case the shift function is expressed as (see “Thermorheologically simple temperature effects” in “Time domain viscoelasticity,” Section 22.7.1 of the Abaqus Analysis User’s Guide)
|
||||
|
||||
$$
|
||||
\log_ {1 0} (A) = - \frac {C _ {1} (\theta - \theta_ {0})}{C _ {2} + (\theta - \theta_ {0})},
|
||||
$$
|
||||
|
||||
where
|
||||
|
||||
$\theta$ is the temperature,
|
||||
|
||||
00 $\theta _ { 0 }$ is the reference temperature, and
|
||||
|
||||
$C _ { 1 }$ and $C _ { 2 }$ are constants.
|
||||
|
||||
The user subroutine would be coded as follows:
|
||||
```txt
|
||||
subroutine utrsnetwork (
|
||||
C Must be updated
|
||||
* outputData,
|
||||
C Can be updated
|
||||
* statev,
|
||||
C Information (Read only)
|
||||
* nOutput,
|
||||
* nstatv,
|
||||
* networkid,
|
||||
* coords,
|
||||
* temp,
|
||||
* dtemp,
|
||||
* nfield,
|
||||
* predef,
|
||||
* dpred,
|
||||
* nprops,
|
||||
* props,
|
||||
* i_array,
|
||||
* niarray,
|
||||
* r_array,
|
||||
* nrarray,
|
||||
* c_array,
|
||||
* ncarray)
|
||||
```
|
||||
|
||||
<!-- source-page: 364 -->
|
||||
|
||||
```python
|
||||
c
|
||||
include 'aba_param.inc'
|
||||
|
||||
c
|
||||
parameter( io_trs_shift_begin = 1,
|
||||
* io_trs_shift_end = 2 )
|
||||
|
||||
c
|
||||
parameter( i_trs_kstep = 1,
|
||||
* i_trs_kinc = 2,
|
||||
* i_trs_noel = 3,
|
||||
* i_trs_npt = 4,
|
||||
* i_trs_layer = 5,
|
||||
* i_trs_kspt = 6 )
|
||||
|
||||
c
|
||||
parameter( ir_trs_step_time = 1,
|
||||
* ir_trs_total_time = 2,
|
||||
* ir_trs_creep_time = 3,
|
||||
* ir_trs_timeinc = 4 )
|
||||
|
||||
c
|
||||
parameter( ic_trs_material_name = 1 )
|
||||
|
||||
c
|
||||
parameter( zero=0.0d0, one=1.0d0, dln10=2.30258509299d0)
|
||||
|
||||
c
|
||||
dimension
|
||||
* statev(nstatv),
|
||||
* predef(nfield),
|
||||
* dpred(nfield),
|
||||
* props(nprops),
|
||||
* coords(*),
|
||||
* outputData(nOutput),
|
||||
* i_array(niarray),
|
||||
* r_array(nrarray)
|
||||
|
||||
character*80 c_array(ncarray)
|
||||
|
||||
c
|
||||
outputData(io_trs_shift_begin) = zero
|
||||
outputData(io_trs_shift_end) = zero
|
||||
temp0 = temp-dtemp
|
||||
|
||||
c
|
||||
c WLF
|
||||
|
||||
c
|
||||
```
|
||||
|
||||
<!-- source-page: 365 -->
|
||||
|
||||
```julia
|
||||
theta0 = props(1)
|
||||
C1 = props(2)
|
||||
C2 = props(3)
|
||||
outputData(io_trs_shift_begin) =
|
||||
& exp(-dln10*C1*(temp0-theta0)/(C2+(temp0-theta0)))
|
||||
outputData(io_trs_shift_end) =
|
||||
& exp(-dln10*C1*(temp-theta0)/(C2+(temp-theta0)))
|
||||
return
|
||||
end
|
||||
```
|
||||
|
||||
<!-- source-page: 366 -->
|
||||
|
||||
<!-- source-page: 367 -->
|
||||
|
||||
# 1.1.58 UVARM: User subroutine to generate element output.
|
||||
|
||||
# Product: Abaqus/Standard
|
||||
|
||||
# References
|
||||
|
||||
• “Obtaining material point information in an Abaqus/Standard analysis,” Section 2.1.6
|
||||
• \*USER OUTPUT VARIABLES
|
||||
• “UVARM,” Section 4.1.26 of the Abaqus Verification Guide
|
||||
|
||||
# Overview
|
||||
|
||||
# User subroutine UVARM:
|
||||
|
||||
• will be called at all material calculation points of elements for which the material definition includes the specification of user-defined output variables;
|
||||
• may be called multiple times for each material point in an increment, as Abaqus/Standard iterates to a converged solution;
|
||||
• will be called for each increment in a step;
|
||||
• allows you to define output quantities that are functions of any of the available integration point quantities listed in the Output Variable Identifiers table (“Abaqus/Standard output variable identifiers,” Section 4.2.1 of the Abaqus Analysis User’s Guide);
|
||||
• allows you to define the material directions as output variables;
|
||||
• can be used for gasket elements;
|
||||
• can call utility routine GETVRM to access material point data;
|
||||
• cannot be used with linear perturbation procedures; and
|
||||
• cannot be updated in the zero increment.
|
||||
|
||||
# Accessing material point data
|
||||
|
||||
You are provided with access to the values of the material point quantities through the utility routine GETVRM described in “Obtaining material point information in an Abaqus/Standard analysis,” Section 2.1.6. In a nonlinear analysis values returned will correspond to the current solution iteration, representing a converged solution only at the final iteration for each increment. The values of the material point data are recovered in the arrays ARRAY, JARRAY, and FLGRAY for floating point, integer, and character data, respectively. Floating point data are recovered as double-precision data.
|
||||
|
||||
# Using user-defined output variables
|
||||
|
||||
The output identifier for the user-defined output quantities is UVARM. Individual components are accessed with UVARMn, where , NUVARM. You must specify the number of user-defined output variables, NUVARM, for a given material to allocate space at each material calculation point for
|
||||
|
||||
<!-- source-page: 368 -->
|
||||
|
||||
each variable. The user-defined output variables are available for both printed and results file output and are written to the output database and restart files for contouring, printing, and X–Y plotting in Abaqus/CAE. Any number of user-defined output variables can be used.
|
||||
|
||||
# Output precision
|
||||
|
||||
The data are provided in double precision for output to the data (.dat) and results (.fil) files and are written to the output database (.odb) file in single precision. Because the user provides UVARM output variables in double precision, numeric overflow errors related to output to the output database file may occur in cases where the output results exceed the capacity for single-precision representation even when no overflow errors occur in UVARM.
|
||||
|
||||
User subroutine interface
|
||||
```txt
|
||||
SUBROUTINE UVARM(UVAR, DIRECT, T, TIME, DTIME, CMNAME, ORNAME, 1 NUVARM, NOEL, NPT, LAYER, KSPT, KSTEP, KINC, NDI, NSHR, COORD, 2 JMAC, JMATYP, MATLABO, LACCFLA)
|
||||
INCLUDE 'ABA_PARAM.INC'
|
||||
C
|
||||
CHARACTER*80 CMNAME, ORNAME
|
||||
CHARACTER*3 FLGRAY(15)
|
||||
DIMENSION UVAR (NUVARM), DIRECT(3, 3), T(3, 3), TIME(2)
|
||||
DIMENSION ARRAY(15), JARRAY(15), JMAC(*), JMATYP(*), COORD(*)
|
||||
C The dimensions of the variables FLGRAY, ARRAY and JARRAY
|
||||
C must be set equal to or greater than 15.
|
||||
user coding to define UVAR
|
||||
RETURN
|
||||
END
|
||||
```
|
||||
|
||||
# Variable to be defined
|
||||
|
||||
# UVAR(NUVARM)
|
||||
|
||||
An array containing the user-defined output variables. These are passed in as the values at the beginning of the increment and must be returned as the values at the end of the increment.
|
||||
|
||||
<!-- source-page: 369 -->
|
||||
|
||||
# DIRECT(3,3)
|
||||
|
||||
An array containing the direction cosines of the material directions in terms of the global basis directions. DIRECT(1,1), DIRECT(2,1), DIRECT(3,1) give the (1, 2, 3) components of the first material direction; DIRECT(1,2), DIRECT(2,2), DIRECT(3,2) give the second material direction, etc. For shell and membrane elements the first two directions are in the plane of the element and the third direction is the normal. This information is not available for beam and truss elements.
|
||||
|
||||
# T(3,3)
|
||||
|
||||
An array containing the direction cosines of the material orientation components relative to the element basis directions. This is the orientation that defines the material directions (DIRECT) in terms of the element basis directions. For continuum elements T and DIRECT are identical. For shell and membrane elements T(1,1) , T(1,2) , T(2,1) , T(2,2) , T(3,3) , and all other components are zero, where is the counterclockwise rotation around the normal vector that defines the orientation. If no orientation is used, T is an identity matrix. Orientation is not available for beam and truss elements.
|
||||
|
||||
# TIME(1)
|
||||
|
||||
Value of step time at the end of the current increment.
|
||||
|
||||
# TIME(2)
|
||||
|
||||
Value of total time at the end of the current increment.
|
||||
|
||||
# DTIME
|
||||
|
||||
Time increment.
|
||||
|
||||
# CMNAME
|
||||
|
||||
User-specified material name, left justified.
|
||||
|
||||
# ORNAME
|
||||
|
||||
User-specified local orientation name, left justified.
|
||||
|
||||
# NUVARM
|
||||
|
||||
User-specified number of user-defined output variables.
|
||||
|
||||
# NOEL
|
||||
|
||||
Element number.
|
||||
|
||||
# NPT
|
||||
|
||||
Integration point number.
|
||||
|
||||
# LAYER
|
||||
|
||||
Layer number (for composite shells and layered solids).
|
||||
|
||||
<!-- source-page: 370 -->
|
||||
|
||||
# KSPT
|
||||
|
||||
Section point number within the current layer.
|
||||
|
||||
# KSTEP
|
||||
|
||||
Step number.
|
||||
|
||||
# KINC
|
||||
|
||||
Increment number.
|
||||
|
||||
# NDI
|
||||
|
||||
Number of direct stress components at this point.
|
||||
|
||||
# NSHR
|
||||
|
||||
Number of shear stress components at this point.
|
||||
|
||||
# COORD
|
||||
|
||||
Coordinates at this material point.
|
||||
|
||||
# JMAC
|
||||
|
||||
Variable that must be passed into the GETVRM utility routine to access an output variable.
|
||||
|
||||
# JMATYP
|
||||
|
||||
Variable that must be passed into the GETVRM utility routine to access an output variable.
|
||||
|
||||
# MATLAYO
|
||||
|
||||
Variable that must be passed into the GETVRM utility routine to access an output variable.
|
||||
|
||||
# LACCFLA
|
||||
|
||||
Variable that must be passed into the GETVRM utility routine to access an output variable.
|
||||
|
||||
# Example: Calculation of stress relative to shift tensor
|
||||
|
||||
Below is an example of user subroutine UVARM. The subroutine calculates the position of the current state of stress relative to the center of the yield surface for the kinematic hardening plasticity model by subtracting the kinematic shift tensor, , from the stress tensor, . See “Metal plasticity models,” Section 4.3.1 of the Abaqus Theory Guide, for additional details.
|
||||
|
||||
```txt
|
||||
SUBROUTINE UVARM(UVAR, DIRECT, T, TIME, DTIME, CMNAME, ORNAME, 1 NUVARM, NOEL, NPT, LAYER, KSPT, KSTEP, KINC, NDI, NSHR, COORD, 2 JMAC, JMATYP, MATLAYO, LACCFLA)
|
||||
C
|
||||
INCLUDE 'ABA_PARAM.INC'
|
||||
C
|
||||
CHARACTER*80 CMNAME, ORNAME
|
||||
CHARACTER*3 FLGRAY(15)
|
||||
DIMENSION UVAR (NUVARM), DIRECT(3, 3), T(3, 3), TIME(2)
|
||||
```
|
||||
Reference in New Issue
Block a user