# Engine Subroutine LUSERnnC for Shell Elements

This subroutine calculates the stress tensor versus the strain tensor, strain rate tensor, or user variables.

## Arguments

The argument list of LUSERnnC and its individual arguments and descriptions are:
C------------------------------------------------------------------------------
SUBROUTINE LUSERnnC(
1 NEL,NUPARAM,NUVAR,NFUNC,IFUNC,
2 NPF,NGL,TF,TIME,TIMESTEP,
3 UPARAM,RHO0,AREA,EINT,SHF,
4 SOUNDSP,VISCMAX,PLA,UVAR,OFF,
5 SIGY,USERBUF)
C-----------------------------------------------------------------------------

The user’s material law can be used in isotropic mode with PID 1 or in orthotropic mode with PID 9, 10, or 11. The directions XX, YY, ... are the shell local reference frame axis. Stresses are computed at each integration point.

Use the Fortran float external function FINTER to get the value Y of the function for the abscissa X.
Y=FINTER(IFUNC(I),X,NPF,TF,DYDX)
Variable
Description
Y
Interpolated value
X
Abscissa value of the function
I
The ith user’s function
DYDX
Slope
NPF, TF
Private function parameters

The SOUNDSP array should always be set by you. It is used to calculate the stability time step and the hourglass forces. The sound speed value should be equal to the plane wave speed.

For elastic or elastoplastic materials, the sound speed is given by the following equation.(1) $c=\sqrt{\frac{E}{\left(\text{1}-{\upsilon }^{\text{2}}\right){\rho }_{\text{0}}}}$

Use VISCMAX to calculate the time step stability when the material law formulation is viscous.

## Definitions

Argument Format Description
NEL Integer read only scalar Number of elements per group. In Radioss Engine subroutines, the element data are treated by groups for vectorization. This argument is machine-dependent and set by Radioss.
NUPARAM Integer read only scalar Size of the user parameter array.
NUVAR Integer read only scalar Number of user element variables.
NFUNC Integer read only scalar Number of functions used for material law.
IFUNC Integer array read only Array of size NFUNC with function indexes.
NPF Integer array private data Array used by FINTER (float external function).
TF Integer array private data Array used by FINTER (float external function).
IPT Integer read only scalar Current layer or interrogation point.
TIME Float read only Current time.
TIMESTEP Float read only Current time step.
UPARAM Float array read only User material parameter array of size NUPARAM.
RHO0 Float array read only Array of size NEL with initial densities.
AREA Float array read only Array of size NEL with current element surfaces.
EINT Float array read only Array of size 2*NEL with internal membrane and bending energy.
SOUNDSP Float array write only Array of size NEL containing sound speed.
VISCMAX Float array write only Array of size NEL containing the maximum damping modulus.
PLA Float array read write Array of size NEL containing plastic strain.
UVAR Float array read write Array of size NEL*NUVAR containing user element variables.
OFF Float array read write Array of size NEL containing deleted element flags.
0
If the element is OFF
1
If the element is ON
NGL Integer array read only Array of size NEL containing the external element number.
SIGY Float array read write Array of size NEL containing yield stress.
USERBUF Data structure read writer Defined in LAW_USERSH.mod. This module should be used to relink the executable inside LUSERnnC.
This USERBUF module contains:
Argument Format Description
NCYCLE Integer read only scalar Current cycle.
ID Integer read only scalar User material ID.
ILAYER Integer read only scalar Current cycle.
IPG Integer read only scalar GAUSS Integration point (surface).
NPTA Integer read only scalar Number of layers or integration points.
IFLAG Integer array read only scalar Array of size NEL containing geometric flags.
FPSXX, FPSYY, FPSZZ, FPSXY, FPSYX Float array read only Array of size NEL containing the deformation gradient tensor.
R11, R12, R13, R21, R22, R23, R31, R32, R33 Float arrays read only Array of size NEL containing rotation matrices from the global skew system to an element skew system.
THKLYL Float array read only Array of size NEL containing the layer thickness at each integration point.
THKN Float array read write Array of size NEL containing total thickness.
EPSPXX, EPSPYY, EPSPXY, EPSPYZ, EPSPZX Float array read only Arrays of size NEL containing $\text{ε}$ strain rates in directions XX and YY and $\gamma$ strains in directions XY, YZ, and ZX.
DEPSXX, DEPSYY, DEPSXY, DEPSYZ, DEPSZX Float array read only Arrays of size NEL containing $\text{ε}$ strain increments in directions XX and YY and $\gamma$ strain increments in directions XY, YZ, and ZX.
EPSXX, EPSYY, EPSXY, EPSYZ, EPSZX Float array read only Array of size NEL containing $\text{ε}$ strains in directions XX and YY and $\gamma$ strains in directions XY, YZ, and ZX.
SIGOXX, SIGOYY, SIGOZZ, SIGOXY, SIGOYZ, SIGOZX Float array read only Array of size NEL containing old (previous time step) elastoplastic stresses in directions XX, YY, ZZ, XY, YZ, and ZX.
SIGNXX, SIGNYY, SIGNXY, SIGNYZ, SIGNZX Float array write only Array of size NEL containing new computed elastoplastic stresses in directions XX, YY, XY, YZ, and ZX.
SIGVXX, SIGVYY, SIGVZZ, SIGVXY, SIGVYZ, SIGVZX Float array write only Array of size NEL containing viscous stresses in directions XX, YY, XY, YZ, and ZX.
DPLA Float array write only Array of size NEL containing the plastic strain.
ETSE Float array write only Array of size NEL containing Et/E (tangent modulus divided by Young’s modulus).
TEMP Float array read only Array of size NEL containing the temperature.

## Shell Element Law Output

Unlike solid elements, shell elements do not have any variables specific to user’s law that are saved in time-history and animation.

## Data Necessary for QEPH Compatibility

The Yield value and value Et/E (tangent modulus divided by Young's modulus) must be given in order for this law to be compatible with QEPH element. The prototype of this routine and the necessary data to provide are described in User's Material Law for Shell Elements Example.