Utility/Data Access
SubroutineUsed in conjunction with UCOSUB to define the part states in a
user-defined constraint.

## Use

This function is called by UCOSUB.

## Format

- Fortran Calling Syntax
- CALL UCOVAR(ID, NPMS, IPMS, NVARS, IVARS)
- C/C++ Calling Syntax
- c_ucovar(id, npms, ipms, nvars, ivars)
- Python Calling Syntax
- py_ucovar(id, ipms, ivars)
- MATLAB Calling Syntax
- m_ucovar(id, ipms, ivars)

## Attributes

`ID`
- [integer]
- The identifier of the corresponding user defined constraint element
(Constraint_UserConstr) that is invoking
UCOSUB.
`NPMS`
- [integer]
- The total number of elements in the array ipms.
`IPMS`
- [integer]
- An array containing part IDs for the variable types in the array
`IVARS`. Arrays LPMS and `IVARS` must
be of same length.
`NVARS`
- [integer]
- The total number of integer codes in array
`IVARS`.
`NVARS` must be equal to `NPMS`.
`IVARS`
- [integer]
- An array containing integer codes to identify the variables involved in the
constraint as described below.
**Integer Code**
**Meaning**
- 11
- Part center of mass X displacement with respect to ground.
- 12
- Part center of mass Y displacement with respect to ground.
- 13
- Part center of mass Z displacement with respect to ground.
- 111
- X component of the axis vector U1 with respect to ground.
- 112
- Y component of the axis vector U1 with respect to ground.
- 113
- Z component of the axis vector U1 with respect to ground.
- 211
- X component of the axis vector U2 with respect to ground.
- 213
- Z component of the axis vector U2 with respect to ground.
- 311
- X component of the axis vector U3 with respect to ground.
- 312
- Y component of the axis vector U3 with respect to ground.
- 313
- Z component of the axis vector U3 with respect to ground.
Here
U1, U2, and U3 are unit vectors pointing along the positive
X, Y, and Z axes of the part principle axes.

## Example

For an example of UCOVAR, please refer to
<install_path>\hwsolvers\usersub.