# udfGetElmAuxData()

Return auxiliary element data at the quadrature point.

## Syntax

data = udfGetElmAuxData( udfHd, dataName ) ;

## Type

User Defined Element

## Parameters

- udfHd
- The opaque handle (pointer) which was passed to the user function.
- dataName (integer)
- Symbolic name of the independent variable of the Jacobian.
- UDF_ELM_VELOCITY
- Velocity.
- UDF_ELM_ACCELERATION
- Acceleration.
- UDF_ELM_PRESSURE
- Pressure.
- UDF_ELM_TEMPERATURE
- Temperature.
- UDF_ELM_SPECIES
- Species.
- UDF_ELM_EDDY_VISCOSITY
- Turbulence eddy viscosity.
- UDF_ELM_KINETIC_ENERGY
- Turbulence kinetic energy.
- UDF_ELM_EDDY_FREQUENCY
- Turbulence eddy frequency.
- UDF_ELM_GRAD_VELOCITY
- Gradient of velocity.
- UDF_ELM_GRAD_PRESSURE
- Gradient of pressure.
- UDF_ELM_GRAD_TEMPERATURE
- Gradient of temperature.
- UDF_ELM_GRAD_SPECIES
- Gradient of species.
- UDF_ELM_MESH_DISPLACEMENT
- Mesh displacement.
- UDF_ELM_MESH_VELOCITY
- Mesh velocity.
- UDF_ELM_MESH_GRAD_DISPLACEMENT
- Gradient of mesh displacement.
- UDF_ELM_MESH_GRAD_VELOCITY
- Gradient of mesh velocity.
- UDF_ELM_TURBULENCE_Y
- Distance to nearest turbulence wall.
- UDF_ELM_TURBULENCE_YPLUS
- Turbulence y+ based on distance to nearest turbulence wall and shear at that wall.
- UDF_ELM_VISCOELASTIC
- Viscoelastic.

## Return Value

- data(Real*)
- Pointer to one, two, or three dimensional real array of the requested data. The dimensions of
the array depend on dataName as follows. If the third (slowest)
dimension of the array is equal to one, then the array may be treated as two
dimensional. If the second dimension is likewise one, then the array is one dimensional.
The x, y, z components of the gradient for gradient quantities are always contained in
the last nontrivial dimension.
dataName First Dimension Second Dimension Third Dimension UDF_ELM_VELOCITY nItems 3 1 UDF_ELM_ACCLERATION nItems 3 1 UDF_ELM_PRESSURE nItems 1 1 UDF_ELM_TEMPERATURE nItems 1 1 UDF_ELM_SPECIES nItems udfGetNumSpecs() 1 UDF_ELM_EDDY_VISCOSITY nItems 1 1 UDF_ELM_KINETIC_ENERGY nItems 1 1 UDF_ELM_EDDY_FREQUENCY nItems 1 1 UDF_ELM_GRAD_VELOCITY nItems 3 3 UDF_ELM_GRAD_PRESSURE nItems 3 1 UDF_ELM_GRAD_TEMPERATURE nItems 3 1 UDF_ELM_GRAD_SPECIES nItems udfGetNumSpecs() 3 UDF_ELM_MESH_DISPLACEMENT nItems 3 1 UDF_ELM_MESH_VELOCITY nItems 3 1 UDF_ELM_MESH_GRAD_DISPLACEMENT nItems 3 3 UDF_ELM_MESH_GRAD_VELOCITY nItems 3 3 UDF_ELM_TURBULENCE_Y nItems 1 1 UDF_ELM_TURBULENCE_YPLUS nItems 1 1 UDF_ELM_VISCOELASTIC nItems 6 1

## Description

This routine returns the requested solution data from the auxiliary element, where the quadrature
point is the same as that of the current element. For
example,

```
Real* data ;
Real* grad_x ;
Real* grad_y ;
Real* grad_z ;
Real* s_x ;
Real* s_y ;
Real* s_z ;
Real u, v, w ;
Real u_x, v_x, w_x, u_y, v_y, w_y, u_z, v_z, w_z ;
Real spec_x, spec_y, spec_z ;
Integer elem, nSpecs, specId ;
...
/* velocity at the aux element */
data = udfGetElmAuxData( udfHd, UDF_ELM_VELOCITY ) ;
for ( elem = 0 ; elem < nItems ; elem++ ) {
u = data[0*nItems+elem] ;
v = data[1*nItems+elem] ;
w = data[2*nItems+elem] ;
...
}
...
/* gradient of velocity at the aux element */
data = udfGetElmAuxData( udfHd, UDF_ELM_GRAD_VELOCITY ) ;
for ( elem = 0 ; elem < nItems ; elem++ ) {
u_x = data[0*nItems+elem] ;
v_x = data[1*nItems+elem] ;
w_x = data[2*nItems+elem] ;
u_y = data[3*nItems+elem] ;
v_y = data[4*nItems+elem] ;
w_y = data[5*nItems+elem] ;
u_z = data[6*nItems+elem] ;
v_z = data[7*nItems+elem] ;
w_z = data[8*nItems+elem] ;
...
}
...
data = udfGetElmAuxData( udfHd, UDF_ELM_GRAD_SPECIES ) ;
nSpecs = udfGetNumSpecs( udfHd ) ;
for ( specId = 0 ; specId < nSpecs ; specId++ ) {
for ( elem = 0 ; elem < nItems ; elem++ ) {
/* 3 components of gradient of species at the aux element */
spec_x = data[nItems*(0*nSpecs+specId)+elem] ;
spec_y = data[nItems*(1*nSpecs+specId)+elem] ;
spec_z = data[nItems*(2*nSpecs+specId)+elem] ;
...
}
}
```

The quantities UDF_ELM_TURBULENCE_Y and UDF_ELM_TURBULENCE_YPLUS are based on the distance to the nearest turbulence wall. These are defined by TURBULENCE_WALL and SIMPLE_BOUNDARY_CONDITIONtype=wall commands. UDF_ELM_TURBULENCE_YPLUS also uses the shear at these walls.

## Errors

- This routine expects a valid udfHd.
- This routine may only be called within a Body Force, Material Model or Component Model user function.
- dataName must be one of the values given above.
- The problem must contain the equation associated with the requested data.