Product: ABAQUS/Standard
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;
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 Manual);
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.
You are provided with access to the values of the material point quantities at the end of the increment through the utility routine GETVRM described in Obtaining material point information, Section 2.1.5. 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.
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 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. 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.
Input File Usage: | *USER OUTPUT VARIABLES NUVARM |
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) 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
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.
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. If the orientation is defined with an element property assignment (see Assigning element properties on an element-by-element basis, Section 21.1.5 of the ABAQUS Analysis User's Manual), the orientation name is an empty string.
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).
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 using the utility routine.
JMATYP
Variable that must be passed into the GETVRM utility routine to access an output variable using the utility routine.
MATLAYO
Variable that must be passed into the GETVRM utility routine to access an output variable using the utility routine.
LACCFLA
Variable that must be passed into the GETVRM utility routine to access an output variable using the utility routine.
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 Manual, for additional details.
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) DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*) C C Error counter: JERROR = 0 C Stress tensor: CALL GETVRM('S',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP, 1 MATLAYO,LACCFLA) JERROR = JERROR + JRCD UVAR(1) = ARRAY(1) UVAR(2) = ARRAY(2) UVAR(3) = ARRAY(3) UVAR(4) = ARRAY(4) UVAR(5) = ARRAY(5) UVAR(6) = ARRAY(6) C Kinematic shift tensor: CALL GETVRM('ALPHA',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP, 1 MATLAYO,LACCFLA) JERROR = JERROR + JRCD C Calculate the position relative to the center of the C yield surface: UVAR(1) = UVAR(1) - ARRAY(1) UVAR(2) = UVAR(2) - ARRAY(2) UVAR(3) = UVAR(3) - ARRAY(3) UVAR(4) = UVAR(4) - ARRAY(4) UVAR(5) = UVAR(5) - ARRAY(5) UVAR(6) = UVAR(6) - ARRAY(6) C If error, write comment to .DAT file: IF(JERROR.NE.0)THEN WRITE(6,*) 'REQUEST ERROR IN UVARM FOR ELEMENT NUMBER ', 1 NOEL,'INTEGRATION POINT NUMBER ',NPT ENDIF RETURN END