<!-- source-page: 631 -->

# 2.1.13 OBTAINING WAVE KINEMATIC DATA IN AN Abaqus/Aqua ANALYSIS

# Product: Abaqus/Aqua

# References

• “UEL,” Section 1.1.28   
• “UWAVE,” Section 1.1.59   
• “Abaqus/Aqua analysis,” Section 6.11.1 of the Abaqus Analysis User’s Guide   
• \*AQUA   
• “UEL,” Section 4.1.14 of the Abaqus Verification Guide

# Overview

Utility routines GETWAVE, GETWAVEVEL, GETWINDVEL, and GETCURRVEL are provided to access the fluid kinematic data for an Abaqus/Aqua analysis.

These routines can be used only from within user subroutine UEL.

# GETWAVE (get wave kinematics)

# Interface

```matlab
PARAMETER (MWCOMP=number of wave components)
DIMENSION WAMP (MWCOMP), WPERD (MWCOMP), WXLAMB (MWCOMP),
1 WPHI (MWCOMP), WOFF (3), WANG (2, MWCOMP)
...
CALL GETWAVE (MWCOMP, NWCOMP, WAMP, WPERD, WXLAMB, WPHI, WOFF, WANG,
1 ELEVB, ELEVS, JWTYPE, JRCD) 
```

# Variables returned from the utility routine

# NWCOMP

Number of wave components (always 1 for Stokes wave theory).

# WAMP

Array containing the amplitude of the wave components.

# WPERD

Array containing the period of the wave components.

# WXLAMB

Array containing the wavelength of the wave components.

<!-- source-page: 632 -->

# WPHI

Array containing the phase angle of the wave components.

# WOFF

Used only for gridded wave data (JWTYPE=2), when WOFF gives the position of the origin of the gridded coordinate system with respect to the global system.

# WANG(2,\*)

For Stokes fifth-order wave theory WANG(1,1) and WANG(2,1) are the direction cosines of wave travel. For Airy wave theory WANG(1,K1) and WANG(2,K1) are the direction cosines of the direction of travel of the K1th wave. For gridded wave data WANG(1,1) and WANG(2,1) are the direction cosines of the wave data grid. In all cases these direction cosines are with respect to the global coordinate system.

# ELEVB

User-defined elevation of the seabed.

# ELEVS

User-defined elevation of the still water surface.

# JWTYPE

Integer flag indicating the wave type, as follows:

```txt
JWTYPE=0 Airy wave theory
JWTYPE=1 Stokes fifth-order wave theory
JWTYPE=2 Wave data obtained from gridded values 
```

# JRCD

The error flag JRCD is returned from GETWAVE as 0 if all the wave kinematic data are read correctly and as −1 if an error occurred (for instance, NWCOMP is greater that MWCOMP).

GETWAVEVEL, GETWINDVEL, and GETCURRVEL (get wave, wind, and current velocities)

# Interface

```txt
CALL GETWAVEVEL (NDIM, X, V, A, LERROR, NOEL, XINTERMED)
CALL GETWINDVEL (NDIM, X, V, NOEL, XINTERMED)
CALL GETCURRVEL (NDIM, X, V, NOEL, XINTERMED) 
```

<!-- source-page: 633 -->

# Variables to be provided to the utility routine

# NDIM

Dimensionality of the element. It should be set to 2 for two-dimensional cases (for example, beams in a plane) and 3 for three-dimensional cases (for example, beams in space).

# X(1..NDIM)

Global coordinates of the point.

# Variables returned from the utility routine

# V(1..NDIM)

Velocity components in the global coordinate system.

# A(1..NDIM)

Wave acceleration components in the global coordinate system. This variable is returned by GETWAVEVEL only.

# LERROR

For gridded wave data LERROR is returned as 0 if the current point is within the grid or above the crest; it is returned as 1 if the point is outside the bounds of the grid. For Airy and Stokes waves LERROR is always returned as 0. If LERROR is returned as 1, the global coordinates of the nearest grid point are returned in X. LERROR is returned by GETWAVEVEL only.

# NOEL

Element number.

# XINTERMED(NDIM)

An array containing the intermediate configuration coordinates of the load integration point. For nonstochastic analysis this array is not used. In a stochastic analysis the wave field is based upon this configuration. Additional details are found in “UWAVE,” Section 1.1.59.

<!-- source-page: 634 -->

<!-- source-page: 635 -->

# 2.1.14 PRINTING MESSAGES TO THE MESSAGE OR STATUS FILE

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   
• “VUMAT: rotating cylinder,” Section 4.1.38 of the Abaqus Verification Guide

# Overview

Utility routines STDB\_ABQERR and XPLB\_ABQERR can be called from any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, to issue an informational, a warning, or an error message to the message (.msg) file in Abaqus/Standard or the status (.sta) file in Abaqus/Explicit.

# Interface

```txt
DIMENSION INTV(*), REALV(*)
CHARACTER*8 CHARV(*)
...
CALL STDB_ABQERR(LOP, STRING, INTV, REALV, CHARV)
or
CALL XPLB_ABQERR(LOP, STRING, INTV, REALV, CHARV)
... 
```

# Variables to be provided to the utility routine

# LOP

Flag for the type of message to be issued.

Set LOP = 1 if an informational message is to be issued.

Set LOP = –1 if a warning message is to be issued.

Set LOP = –2 if an error message is to be issued and the analysis is to be continued.

Set LOP = –3 if an error message is to be issued and the analysis is to be stopped immediately.

# STRING

A string of at most 500 characters long between single quotes containing the message to be issued. If the string needs to be written on more than one line, several one line long strings (between single quotes) should be concatenated using the double forward slash (//) operator.

Integer, real, and character variables can be referenced inside the message using the %I, %R, and %S inserts, respectively. The integer, real, or character variables are passed into the utility routine via

<!-- source-page: 636 -->

# PRINTING MESSAGES

the INTV, REALV, and CHARV variables, respectively. The variables are then output in the order they are stored in these arrays.

# INTV

Array of integer variables to be output. The first %I in STRING will output INTV(1), the second INTV(2), and so on.

# REALV

Array of real variables to be output. The first %R in STRING will output REALV(1), the second REALV(2), and so on.

# CHARV

Array of at most 8 character long variables to be output. The first %S in STRING will output CHARV(1), the second CHARV(2), and so on.

<!-- source-page: 637 -->

# 2.1.15 TERMINATING AN ANALYSIS

Products: Abaqus/Standard Abaqus/Explicit

# References

• “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis User’s Guide   
• “UMAT and UHYPER,” Section 4.1.21 of the Abaqus Verification Guide   
• “UWAVE and UEXTERNALDB,” Section 4.1.27 of the Abaqus Verification Guide   
• “VUMAT: rotating cylinder,” Section 4.1.38 of the Abaqus Verification Guide

# Overview

Utility routines XIT and XPLB\_EXIT can be called from within any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, (except UEXTERNALDB) to terminate an analysis.

XIT or XPLB\_EXIT should be used instead of STOP to ensure that all files associated with the analysis are closed properly.

# Interface

```csv
CALL XIT
or
CALL XPLB_EXIT 
```

<!-- source-page: 638 -->

<!-- source-page: 639 -->

# 2.1.16 OBTAINING SENSOR INFORMATION

Products: Abaqus/Standard Abaqus/Explicit

# References

• “UAMP,” Section 1.1.19   
• “VUAMP,” Section 1.2.9   
• “Crank mechanism,” Section 4.1.2 of the Abaqus Example Problems Guide

# Overview

Given the user-defined name for a sensor, utility routines can be used to obtain the sensor ID or the sensor value using a computationally efficient searching technique.

Utility routines IGETSENSORID and GETSENSORVALUE can be called only from Abaqus/Standard user subroutine UAMP. Utility routines IVGETSENSORID and VGETSENSORVALUE can be called only from Abaqus/Explicit user subroutine VUAMP.

# Interface

```prolog
character*80 mySensorName
...
iMySensorID = IGETSENSORID(mySensorName, jSensorLookUpTable)
iMySensorID = IVGETSENSORID(mySensorName, jSensorLookUpTable)
dMySensorValue = sensorValues(iMySensorID)
...
dMySensorValue = GETSENSORVALUE(mySensorName,
C    jSensorLookUpTable, sensorValues)
dMySensorValue = VGETSENSORVALUE(mySensorName,
C    jSensorLookUpTable, sensorValues)
... 
```

# Variables to be provided to the utility routine

# mySensorName

User-defined character string, uppercase, left justified.

# jSensorLookUpTable

Pointer to an object containing a binary tree look up table for sensors. The calling user subroutine provides this variable.

<!-- source-page: 640 -->

# sensorValues

Array containing the latest sensor values for all sensors in the model.

# Variables returned from the utility routine

# iMySensorID

Index in the sensorValues array for this sensor name.

# dMySensorValue

Sensor value for this sensor name.
