modify documents

This commit is contained in:
KOKO\Mimi
2026-08-18 23:24:35 +09:00
parent 3cd5a21892
commit d3e41b4c93
353 changed files with 23702 additions and 4289 deletions
@@ -0,0 +1,358 @@
<!-- source-page: 601 -->
# 2.1.3 OBTAINING THE Abaqus OUTPUT DIRECTORY NAME
Products: Abaqus/Standard Abaqus/Explicit
# References
• “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis Users Guide
• “UWAVE and UEXTERNALDB,” Section 4.1.27 of the Abaqus Verification Guide
# Overview
Utility routines GETOUTDIR and VGETOUTDIR can be called from any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, to obtain the output directory of the current job.
# Interface
```txt
character*256 OUTDIR
...
CALL GETOUTDIR( OUTDIR, LENOUTDIR )
CALL VGETOUTDIR( OUTDIR, LENOUTDIR )
...
```
# Variables returned from the utility routine
# OUTDIR
Character string to receive the value of the output directory name.
# LENOUTDIR
Length of the character string OUTDIR.
<!-- source-page: 602 -->
<!-- source-page: 603 -->
# 2.1.4 OBTAINING PARALLEL PROCESSES INFORMATION
Products: Abaqus/Standard Abaqus/Explicit
# References
• “Parallel execution: overview,” Section 3.5.1 of the Abaqus Analysis Users Guide
• “VUSDFLD,” Section 4.1.39 of the Abaqus Verification Guide
# Overview
Several different utility routines are available to provide detailed information about your parallel processes.
# GETNUMCPUS and VGETNUMCPUS (obtain the number of processes)
Utility routine GETNUMCPUS can be called from any Abaqus/Standard user subroutine. GETNUMCPUS returns the number of MPI processes.
Utility routine VGETNUMCPUS can be called from any Abaqus/Explicit user subroutine in a domainparallel run. VGETNUMCPUS provides the number of processes used for the parallel run.
# Interface
CALL GETNUMCPUS( NUMPROCESSES )CALL VGETNUMCPUS( NUMPROCESSES ):·
# Variable returned from the utility routine
# NUMPROCESSES
Number of processes specified for the analysis.
# GETRANK and VGETRANK (obtain the process number)
Utility routine GETRANK can be called from any Abaqus/Standard user subroutine. GETRANK returns the rank of the MPI process from which the function is called. For example, in a hybrid MPI and thread parallel execution scheme, multiple threads may all return the rank of their parent MPI process (see “Parallel execution in Abaqus/Standard,” Section 3.5.2 of the Abaqus Analysis Users Guide).
Utility routine VGETRANK can be called from any Abaqus/Explicit user subroutine in a domain-parallel run. VGETRANK provides the individual process rank (see “Parallel execution in Abaqus/Explicit,” Section 3.5.3 of the Abaqus Analysis Users Guide).
<!-- source-page: 604 -->
# Interface
```txt
CALL GETRANK( KPROCESSNUM )
CALL VGETRANK( KPROCESSNUM )
...
```
# Variable returned from the utility routine
# KPROCESSNUM
Process number or rank. A process number is either zero or a positive integer.
# GETNUMTHREADS (obtain the number of threads)
Utility routine GETNUMTHREADS can be called from any Abaqus user subroutine. It returns the number of threads in a process. In a hybrid parallel execution mode, there will be several Abaqus MPI processes, each having several threads.
# Interface
```cpp
Fortran:
#include <SMAAspUserSubroutines.hdr>
integer numThreads
numThreads = GETNUMTHREADS()
C++:
#include <SMAAspUserSubroutines.h>
int numThreads = GETNUMTHREADS();
```
<!-- source-page: 605 -->
# get\_thread\_id
You can determine the ID of the thread you are in by calling the utility function get\_thread\_id. The returned ID is an integer that Abaqus assigns to each of its threads. The main thread will have the ID=0, and each subsequent thread will have an ID of 1, 2, 3, 4, ..., N. This function can be called from any Abaqus user subroutine and from both the Fortran and C/C++ codes.
# Interface
```txt
FOTRAN:
#include <SMAAspUserSubroutines.hdr>
INTEGER myThreadID
myThreadID = get_thread_id()
C++:
#include <SMAAspUserSubroutines.h>
int myThreadID = get_thread_id()
```
# Variable returned from the utility routine
thread\_id
Current thread ID, an integer.
# GETCOMMUNICATOR (Fortran)
Utility function GETCOMMUNICATOR can be called from any Abaqus user subroutine. GETCOMMUNICATOR returns a communicator that Abaqus defines for its worker processes, similar to MPI\_COMM\_WORLD. In Fortran its type is an INTEGER. The communicator thus obtained can be used for subsequent MPI communication routines. In a nonparallel run, when the MPI subsystem is not initialized, communicators do not exist and GET\_COMMUNICATOR() will return 0. Another way of testing is to call the MPI\_Initialized(flag) function. This function will set the flag to 1 if MPI has been initialized.
# Interface
```cpp
#include <SMAAspUserSubroutines.hdr>
integer ABA_COMM_WORLD
```
<!-- source-page: 606 -->
```txt
ABA_COMM_WORLD = GETCOMMUNICATOR()
if (ABA_COMM_WORLD.ne.0) then
...do some parallel work, using MPI ...
else
...do some work in a single process ...
end if
```
# Variable returned from the utility routine
# INTEGER
Communicator handle identifier of type INTEGER. In a non-MPI run, the value returned will be zero.
# get\_communicator (C++)
Utility function get\_communicator can be called from any Abaqus user subroutine. get\_communicator returns a communicator that Abaqus defines for its worker processes. In C++ this function is called get\_communicator() and returns a value of the type MPI\_Comm. The communicator thus obtained can be used for subsequent MPI communication routines. In a nonparallel run, when the MPI subsystem is not initialized, communicators do not exist and get\_communicator() will return 0. Another way of testing is to call the MPI\_Initialized(flag) function. This function will set the flag to 1 if MPI has been initialized.
# Interface
```c
#include <SMAAspUserSubroutines.h>
MPI_Comm ABA_COMM_WORLD = get_communicator()
if (ABA_COMM_WORLD) {
... do some parallel work, using MPI ...
}
else{
...do some work in a single process ...
}
```
# Variable returned from the utility routine
# MPI\_Comm
Communicator handle of type MPI\_Comm. In a non-MPI run, the value returned will be zero.
<!-- source-page: 607 -->
# 2.1.5 OBTAINING PART INFORMATION
Products: Abaqus/Standard Abaqus/Explicit
# References
• “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis Users Guide
• “Defining an assembly,” Section 2.10.1 of the Abaqus Analysis Users Guide
• “Pure bending of a cylinder: CAXA elements,” Section 1.3.33 of the Abaqus Verification Guide
# Overview
Several utility routines are available to allow you to obtain information about your part instances.
Utility routines GETPARTINFO and VGETPARTINFO can be called from any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, to retrieve the part instance name and original node or element number corresponding to an internal node or element number. Utility routines GETINTERNAL and VGETINTERNAL can be called from any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, to retrieve the internal node or element number corresponding to a part instance name and original node or element number. The part file (jobname.prt) must be available. The expense of calling these routines is not trivial, so minimal use of them is recommended.
GETPARTINFO and VGETPARTINFO (obtain part instance information given global node/element number)
# Interface
```txt
CHARACTER*80 CPNAME
...
CALL GETPARTINFO(INTNUM, JTYP, CPNAME, LOCNUM, JRCD)
or
CALL VGETPARTINFO(INTNUM, JTYP, CPNAME, LOCNUM, JRCD)
```
# Variables to be provided to the utility routine
# INTNUM
The internal (global) node or element number to be looked up.
# JTYP
An integer flag indicating whether INTNUM is a node or element number. Set JTYP=0 to look up a node number, and set JTYP=1 to look up an element number.
<!-- source-page: 608 -->
# Variables returned from the utility routine
# CPNAME
The name of the part instance that contains INTNUM. An empty part instance name indicates that the node or element is at the assembly level and is not included in any part instance.
# LOCNUM
The part-local node or element number corresponding to INTNUM.
# JRCD
Return code (0no error, 1error).
# GETINTERNAL and VGETINTERNAL (obtain global node/element number given part instance information )
# Interface
```txt
CHARACTER*80 CPNAME
...
CALL GETINTERNAL(CPNAME, LOCNUM, JTYP, INTNUM, JRCD)
or
CALL VGETINTERNAL(CPNAME, LOCNUM, JTYP, INTNUM, JRCD)
```
# Variables to be provided to the utility routine
# CPNAME
The name of the part instance that contains LOCNUM.
# LOCNUM
The part-local node or element number to be looked up.
# JTYP
An integer flag indicating whether LOCNUM is a node or element number. Set JTYP=0 to look up a node number, and set JTYP=1 to look up an element number.
# Variables returned from the utility routine
# INTNUM
The internal (global) node or element number corresponding to LOCNUM in part instance CPNAME.
# JRCD
Return code (0no error, 1error).
<!-- source-page: 609 -->
# 2.1.6 OBTAINING MATERIAL POINT INFORMATION IN AN Abaqus/Standard ANALYSIS
# Product: Abaqus/Standard
# References
• “UVARM,” Section 1.1.58
• “USDFLD,” Section 1.1.53
• “UDMGINI,” Section 1.1.26
• “Damage and failure of a laminated composite plate,” Section 1.1.14 of the Abaqus Example Problems Guide
• “USDFLD,” Section 4.1.24 of the Abaqus Verification Guide
• “UVARM,” Section 4.1.26 of the Abaqus Verification Guide
# Overview
Utility routine GETVRM can be called from either user subroutine UVARM, UDMGINI, or USDFLD to access material integration point information.
# Interface
DIMENSION ARRAY(15), JARRAY(15) CHARACTER\*3 FLGRAY(15)
CALL GETVRM('VAR',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,MATLAYO, LACCFLA)
# Variables to be provided to the utility routine
# VAR
Output variable key from the table in “Abaqus/Standard output variable identifiers,” Section 4.2.1 of the Abaqus Analysis Users Guide. The applicable keys are listed in the output table as being available for results file output at the element integration points; e.g., S for stress.
# JMAC
Variable that must be passed into the GETVRM utility routine. The calling user subroutine provides this variable.
# JMATYP
Variable that must be passed into the GETVRM utility routine. The calling user subroutine provides this variable.
<!-- source-page: 610 -->
# MATLAYO
Variable that must be passed into the GETVRM utility routine. The calling user subroutine provides this variable.
# LACCFLA
Variable that must be passed into the GETVRM utility routine. The calling user subroutine provides this variable.
# Variables returned from the utility routine
# ARRAY
Real array containing individual components of the output variable.
# JARRAY
Integer array containing individual components of the output variable.
# FLGRAY
Character array containing flags corresponding to the individual components. Flags will contain either YES, NO, or N/A (not applicable).
# JRCD
Return code (0 no error, 1 output request error or all components of output request are zero).
# Available output variable keys
Only output variable keys that are valid for results file output are available for use with GETVRM. In general, if a key corresponds to a collective output variable, rather than an individual component, it can be used with GETVRM. For example, S for the stress tensor can be used, whereas any individual component of stress, say S11, 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 Users Guide. Output variable keys that cannot be used with GETVRM are listed later in this section.
You will be returned ARRAY, JARRAY, and FLGRAY, which correspond to the real-valued components, integer-valued components, and the flags associated with the request VAR, respectively. If any array component is not applicable for a given request, its value will be returned as the initialized value: 0.0 in ARRAY, 0 in JARRAY, and N/A in FLGRAY. The error flag JRCD=1 is returned from GETVRM any time a request key is not recognized, the request is not valid (such as requesting transverse shear stress for a shell element that uses thin shell theory), or all of the output components requested are zero; otherwise, JRCD=0.
# Ordering of returned components
The components for a request are written as follows. Single index components (and requests without components) are returned in positions 1, 2, 3, etc. Double index components are returned in the