380 lines
11 KiB
Markdown
380 lines
11 KiB
Markdown
<!-- source-page: 621 -->
|
||
|
||
# 2.1.9 OBTAINING NODE POINT INFORMATION
|
||
|
||
Product: Abaqus/Standard
|
||
|
||
# References
|
||
|
||
• “UMESHMOTION,” Section 1.1.46
|
||
• “Erosion of material (sand production) in an oil wellbore,” Section 1.1.22 of the Abaqus Example Problems Guide
|
||
|
||
# Overview
|
||
|
||
Utility routine GETVRN can be called from user subroutine UMESHMOTION to access node point information.
|
||
|
||
# Interface
|
||
|
||
```txt
|
||
DIMENSION ARRAY(15), JGVBLOCK(*)
|
||
...
|
||
CALL GETVRN(NODE, 'VAR', ARRAY, JRCD, JGVBLOCK, LTRN)
|
||
```
|
||
|
||
# Variables to be provided to the utility routine
|
||
|
||
# NODE
|
||
|
||
Node number.
|
||
|
||
# VAR
|
||
|
||
Output variable key from the table in “Abaqus/Standard output variable identifiers,” Section 4.2.1 of the Abaqus Analysis User’s Guide. The applicable keys are listed in the output table as being available for results file output at nodes; e.g., U for displacement.
|
||
|
||
# JGVBLOCK
|
||
|
||
Variable that must be passed into the GETVRN utility routine. The variable is available in user subroutine UMESHMOTION for this purpose.
|
||
|
||
# LTRN
|
||
|
||
Variable indicating the coordinate system the nodal quantity is to be returned in. A value of 0 specifies that the results are to be returned in the global coordinate system, regardless of any transformation applied at the node. A value of 1 specifies that the results are to be returned in the local transformed system.
|
||
|
||
<!-- source-page: 622 -->
|
||
|
||
# Variables returned from the utility routine
|
||
|
||
# ARRAY
|
||
|
||
Real array containing individual components of the output variable.
|
||
|
||
# JRCD
|
||
|
||
Return code (0 – no error, 1 – output request error or all components of output request are zero).
|
||
|
||
# Available output variable keys
|
||
|
||
Only nodal output variable keys that are valid for results file output in the current step are available for use with GETVRN. In general, if a key corresponds to a collective output variable, rather than an individual component, it can be used with GETVRN. For example, U for displacement can be used, whereas any individual component of displacement, say U1, cannot be used. The collective output variable keys are distinguished from their individual components by the fact that they have a bullet ( ) in the .fil column in the tables in “Abaqus/Standard output variable identifiers,” Section 4.2.1 of the Abaqus Analysis User’s Guide.
|
||
|
||
You will be returned ARRAY, which corresponds to the real-valued components associated with the request VAR. If any array component is not applicable for a given request, its value will be returned as the initialized value: 0.0. The error flag JRCD=1 is returned from GETVRN any time a request key is not recognized, the request is not valid (such as requesting pore pressure for a node not associated with a pore pressure or acoustic element, or requesting a variable not available for the current procedure), or all of the output components requested are zero; otherwise, JRCD=0.
|
||
|
||
# Ordering of returned components
|
||
|
||
The components for a vector request are returned in positions 1, 2, 3, etc.
|
||
|
||
# Analysis time for which values are returned
|
||
|
||
GETVRN returns values at the end of the current increment.
|
||
|
||
<!-- source-page: 623 -->
|
||
|
||
# 2.1.10 OBTAINING NODE TO ELEMENT CONNECTIVITY
|
||
|
||
Product: Abaqus/Standard
|
||
|
||
# References
|
||
|
||
• “UMESHMOTION,” Section 1.1.46
|
||
• “Obtaining material point information averaged at a node,” Section 2.1.8
|
||
• “Erosion of material (sand production) in an oil wellbore,” Section 1.1.22 of the Abaqus Example Problems Guide
|
||
|
||
# Overview
|
||
|
||
Utility routine GETNODETOELEMCONN can be called from user subroutine UMESHMOTION to retrieve a list of elements connected to a specified node.
|
||
|
||
# Interface
|
||
|
||
```txt
|
||
PARAMETER ( MAXNELEMS = 100 )
|
||
DIMENSION JELEMLIST(MAXNELEMS), JELEMTYPE(MAXNELEMS), JGVBLOCK(*)
|
||
...
|
||
NELEMS = MAXNELEMS
|
||
CALL GETNODETOELEMCORN(NODE, NELEMS, JELEMLIST, JELEMTYPE, JRCD, JGVBLOCK)
|
||
```
|
||
|
||
# Variables to be provided to the utility routine
|
||
|
||
# NODE
|
||
|
||
User node number.
|
||
|
||
# NELEMS
|
||
|
||
You must set NELEMS to the maximum allowable length of the JELEMLIST and JELEMTYPE arrays. This value corresponds to the maximum expected number of elements attached to an adaptive mesh constraint node in your model. GETNODETOELEMCONN will assume that your JELEMLIST and JELEMTYPE arrays are NELEMS long. In the event that the actual element connectivity exceeds NELEMS, no result will be returned and the return code JRCD will indicate an error. An NELEMS value of 100 is typically more than adequate for common meshes. NELEMS is modified by GETNODETOELEMCONN and should not be a Fortran parameter-statement constant.
|
||
|
||
# JGVBLOCK
|
||
|
||
Variable that must be passed into the GETNODETOELEMCONN utility routine. This variable is available in user subroutine UMESHMOTION for this purpose.
|
||
|
||
<!-- source-page: 624 -->
|
||
|
||
# Variables returned from the utility routine
|
||
|
||
# JELEMLIST
|
||
|
||
Array of element numbers for elements connected to NODE. The list will contain elements only in adaptive mesh domains active in the step as well as any contact elements associated with the domain. The number of entries in this array corresponds to the returned value of NELEMS.
|
||
|
||
# JELEMTYPE
|
||
|
||
Array of element type designators describing the element types corresponding to each element entry in JELEMLIST. The number of entries in this array corresponds to the returned value of NELEMS.
|
||
|
||
JELEMTYPE entries:
|
||
|
||
1 indicates a solid element.
|
||
|
||
2 indicates a contact element.
|
||
|
||
# NELEMS
|
||
|
||
Actual length of the JELEMLIST and JELEMTYPE arrays.
|
||
|
||
# JRCD
|
||
|
||
Return code (0 indicates no error, 1 indicates an output request error). An output request error indicates either that the requested variable is not available or that your NELEMS parameter setting is smaller than the element connectivity list at this node.
|
||
|
||
<!-- source-page: 625 -->
|
||
|
||
# 2.1.11 OBTAINING STRESS INVARIANTS, PRINCIPAL STRESS/STRAIN VALUES AND DIRECTIONS, AND ROTATING TENSORS IN AN Abaqus/Standard ANALYSIS
|
||
|
||
Product: Abaqus/Standard
|
||
|
||
# References
|
||
|
||
• “UMAT,” Section 1.1.44
|
||
• “Calculation of principal stresses and strains and their directions: FPRIN,” Section 15.1.3 of the Abaqus Example Problems Guide
|
||
|
||
# Overview
|
||
|
||
Utility routines are available for calculating stress invariants, principal stress/strain values, and principal stress/strain directions from the relevant tensors, as well as for transforming tensors to a new basis.
|
||
|
||
These utility routines are available for Abaqus/Standard user subroutines that store stress and strain components according to the convention presented in “Conventions,” Section 1.2.2 of the Abaqus Analysis User’s Guide. They are most commonly called from user subroutine UMAT.
|
||
|
||
SINV (calculate stress invariants)
|
||
|
||
# Interface
|
||
|
||
CALL SINV(STRESS,SINV1,SINV2,NDI,NSHR)
|
||
|
||
# Variables to be provided to the utility routine
|
||
|
||
# STRESS
|
||
|
||
A stress tensor.
|
||
|
||
# NDI
|
||
|
||
Number of direct components.
|
||
|
||
# NSHR
|
||
|
||
Number of shear components.
|
||
|
||
# Variables returned from the utility routine
|
||
|
||
# SINV1
|
||
|
||
First invariant.
|
||
|
||
$$
|
||
\operatorname{SINV1} = \frac {1}{3} \operatorname{trace} \sigma ,
|
||
$$
|
||
|
||
<!-- source-page: 626 -->
|
||
|
||
where is the stress tensor.
|
||
|
||
# SINV2
|
||
|
||
Second invariant.
|
||
|
||
$$
|
||
\mathrm{SINV2} = \sqrt {\frac {3}{2} \mathbf {S} : \mathbf {S}},
|
||
$$
|
||
|
||
where is the deviatoric stress tensor, defined as
|
||
|
||
$$
|
||
\mathbf {S} = \sigma - \frac {1}{3} \operatorname{trace} \sigma \mathbf {I}.
|
||
$$
|
||
|
||
# SPRINC (calculate principal values)
|
||
|
||
# Interface
|
||
|
||
CALL SPRINC(S,PS,LSTR,NDI,NSHR)
|
||
|
||
# Variables to be provided to the utility routine
|
||
|
||
S
|
||
|
||
Stress or strain tensor.
|
||
|
||
LSTR
|
||
|
||
An identifier. LSTR=1 indicates that S contains stresses; LSTR=2 indicates that S contains strains.
|
||
|
||
NDI
|
||
|
||
Number of direct components.
|
||
|
||
NSHR
|
||
|
||
Number of shear components.
|
||
|
||
# Variables returned from the utility routine
|
||
|
||
PS(I), I=1,2,3
|
||
|
||
The three principal values.
|
||
|
||
# SPRIND (calculate principal values and directions)
|
||
|
||
# Interface
|
||
|
||
CALL SPRIND(S,PS,AN,LSTR,NDI,NSHR)
|
||
|
||
<!-- source-page: 627 -->
|
||
|
||
Variables to be provided to the utility routine
|
||
```txt
|
||
S
|
||
A stress or a strain tensor.
|
||
LSTR
|
||
An identifier. LSTR=1 indicates that S contains stresses; LSTR=2 indicates that S contains strains.
|
||
```
|
||
|
||
```txt
|
||
NDI Number of direct components.
|
||
```
|
||
|
||
```txt
|
||
NSHR Number of shear components.
|
||
```
|
||
|
||
Variables returned from the utility routine
|
||
```txt
|
||
PS(I), I=1,2,3
|
||
The three principal values.
|
||
AN(K1,I), I=1,2,3
|
||
The direction cosines of the principal directions corresponding to PS(K1).
|
||
```
|
||
ROTSIG (rotate a tensor)
|
||
|
||
Interface
|
||
```csv
|
||
CALL ROTSIG(S,R,SPRIME,LSTR,NDI,NSHR)
|
||
```
|
||
|
||
Variables to be provided to the utility routine
|
||
```txt
|
||
S
|
||
A stress or strain tensor.
|
||
NDI
|
||
Number of direct components.
|
||
```
|
||
|
||
```txt
|
||
NSHR
|
||
Number of shear components.
|
||
```
|
||
|
||
```txt
|
||
R Rotation matrix.
|
||
```
|
||
|
||
```txt
|
||
LSTR
|
||
An identifier. LSTR = 1 indicates S contains stresses; LSTR = 2 indicates S contains strains.
|
||
```
|
||
|
||
<!-- source-page: 628 -->
|
||
|
||
# Variable returned from the utility routine
|
||
|
||
# SPRIME
|
||
|
||
The rotated stress or strain tensor.
|
||
|
||
# Typical usage
|
||
|
||
In user subroutine UMAT it is often necessary to rotate tensors during a finite-strain analysis. The matrix DROT that is passed into UMAT represents the incremental rotation of the material basis system in which the stress and strain are stored. For an elastic-plastic material that hardens isotropically, the elastic and plastic strain tensors must be rotated to account for the evolution of the material directions. In this case S is the elastic or plastic strain tensor and R is the incremental rotation DROT.
|
||
|
||
<!-- source-page: 629 -->
|
||
|
||
# 2.1.12 OBTAINING PRINCIPAL STRESS/STRAIN VALUES AND DIRECTIONS IN AN Abaqus/Explicit ANALYSIS
|
||
|
||
Product: Abaqus/Explicit
|
||
|
||
# Reference
|
||
|
||
• “VUMAT,” Section 1.2.22
|
||
|
||
# Overview
|
||
|
||
Utility routines are available for calculating principal stress/strain values and principal stress/strain directions from the relevant tensors.
|
||
|
||
These utility routines are available for Abaqus/Explicit user subroutines that store stress and strain components according to the convention presented in “Conventions,” Section 1.2.2 of the Abaqus Analysis User’s Guide. They are most commonly called from user subroutine VUMAT.
|
||
|
||
VSPRINC (calculate principal values)
|
||
|
||
# Interface
|
||
|
||
call vsprinc( nblock, s, eigVal, ndir, nshr )
|
||
|
||
Variables to be provided to the utility routine
|
||
|
||
s(nblock,ndir+nshr)
|
||
|
||
Stress or strain symmetric tensor.
|
||
|
||
nblock
|
||
|
||
Number of material points to be processed in this call to VSPRINC.
|
||
|
||
ndir
|
||
|
||
Number of direct components in the symmetric tensor.
|
||
|
||
nshr
|
||
|
||
Number of shear components in the symmetric tensor.
|
||
|
||
Variable returned from the utility routine
|
||
|
||
eigVal(nblock,I), I=1,2,3
|
||
|
||
The three principal values.
|
||
|
||
<!-- source-page: 630 -->
|
||
|
||
# Interface
|
||
|
||
call vsprind( nblock, s, eigVal, eigVec, ndir, nshr )
|
||
|
||
# Variables to be provided to the utility routine
|
||
|
||
s(nblock,ndir+nshr)
|
||
|
||
Stress or strain symmetric tensor.
|
||
|
||
nblock
|
||
|
||
Number of material points to be processed in this call to VSPRIND.
|
||
|
||
ndir
|
||
|
||
Number of direct components in the symmetric tensor.
|
||
|
||
nshr
|
||
|
||
Number of shear components in the symmetric tensor.
|
||
|
||
# Variables returned from the utility routine
|
||
|
||
eigVal(nblock,I), I=1,2,3
|
||
|
||
The three principal values.
|
||
|
||
eigVec(nblock,I,K1), I=1,2,3
|
||
|
||
The direction cosines of the principal directions corresponding to eigVal(K1).
|