```txt const double* xc, const double* yc, const double* zc, double amp, double totalTime, double stepTime, const char* surfaceName, double* bcvals) { int i; if (direction == 2) { for (i = 0; i < nfacets; i++) { bcvals[i] = 1.0 - xc[i] * xc[i] / 100.0; } } } ``` # 2. Utility Routines • “Utility routines,” Section 2.1 # 2.1 Utility routines • “Obtaining Abaqus environment variables,” Section 2.1.1 • “Obtaining the Abaqus job name,” Section 2.1.2 • “Obtaining the Abaqus output directory name,” Section 2.1.3 • “Obtaining parallel processes information,” Section 2.1.4 • “Obtaining part information,” Section 2.1.5 • “Obtaining material point information in an Abaqus/Standard analysis,” Section 2.1.6 • “Obtaining material point information in an Abaqus/Explicit analysis,” Section 2.1.7 • “Obtaining material point information averaged at a node,” Section 2.1.8 • “Obtaining node point information,” Section 2.1.9 • “Obtaining node to element connectivity,” Section 2.1.10 • “Obtaining stress invariants, principal stress/strain values and directions, and rotating tensors in an Abaqus/Standard analysis,” Section 2.1.11 • “Obtaining principal stress/strain values and directions in an Abaqus/Explicit analysis,” Section 2.1.12 • “Obtaining wave kinematic data in an Abaqus/Aqua analysis,” Section 2.1.13 • “Printing messages to the message or status file,” Section 2.1.14 • “Terminating an analysis,” Section 2.1.15 • “Obtaining sensor information,” Section 2.1.16 • “Accessing Abaqus materials,” Section 2.1.17 • “Accessing Abaqus thermal materials,” Section 2.1.18 • “Obtaining scalar state information in an Abaqus/CFD analysis,” Section 2.1.19 • “Obtaining vector state information in an Abaqus/CFD analysis,” Section 2.1.20 • “Obtaining the MPI communicator in an Abaqus/CFD analysis,” Section 2.1.21 • “Ensuring thread safety,” Section 2.1.22 • “Allocatable arrays,” Section 2.1.23 # 2.1.1 OBTAINING Abaqus ENVIRONMENT VARIABLES Products: Abaqus/Standard Abaqus/Explicit # References • “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis User’s Guide • “Using the Abaqus environment settings,” Section 3.3.1 of the Abaqus Analysis User’s Guide • “UWAVE and UEXTERNALDB,” Section 4.1.27 of the Abaqus Verification Guide # Overview Utility routines GETENVVAR and VGETENVVAR can be called from any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, to obtain the value of an environment variable. # Interface ```txt character*256 ENVVAR ... CALL GETENVVAR('ENVVARNAME', ENVVAR, LENVVAR) CALL VGETENVVAR('ENVVARNAME', ENVVAR, LENVVAR) ... ``` # Variable to be provided to the utility routine # ENVVARNAME Environment variable name. # Variables returned from the utility routine # ENVVAR Character string to receive the value of the environment variable. # LENVVAR Length of the character string ENVVAR. # 2.1.2 OBTAINING THE Abaqus JOB NAME Products: Abaqus/Standard Abaqus/Explicit # References • “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis User’s Guide • “UWAVE and UEXTERNALDB,” Section 4.1.27 of the Abaqus Verification Guide # Overview Utility routines GETJOBNAME and VGETJOBNAME can be called from any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, to obtain the name of the current job. # Interface ```txt character*256 JOBNAME ... CALL GETJOBNAME( JOBNAME, LENJOBNAME ) CALL VGETJOBNAME( JOBNAME, LENJOBNAME ) ... ``` # Variables returned from the utility routine # JOBNAME Character string to receive the value of the job name. # LENJOBNAME Length of the character string JOBNAME.