Engine Subroutine SIGEPSnnC for Shell Elements

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

Arguments

The argument list of SIGEPSnnC and its individual arguments and descriptions are:
C-----------------------------------------------------------------------------------------
SUBROUTINE SIGEPS29C(
1     NEL    ,NUPARAM,NUVAR   ,NFUNC   ,IFUNC  ,
2     NPF    ,NPT    ,IPT     ,IFLAG   ,
2     TF     ,TIME   ,TIMESTEP,UPARAM  ,RHO0   ,
3     AREA   ,EINT   ,THKLY   ,
4     EPSPXX ,EPSPYY ,EPSPXY  ,EPSPYZ  ,EPSPZX ,
5     DEPSXX ,DEPSYY ,DEPSXY  ,DEPSYZ  ,DEPSZX ,
6     EPSXX  ,EPSYY  ,EPSXY   ,EPSYZ   ,EPSZX  ,
7     SIGOXX ,SIGOYY ,SIGOXY  ,SIGOYZ  ,SIGOZX ,
8     SIGNXX ,SIGNYY ,SIGNXY  ,SIGNYZ  ,SIGNZX ,
9     SIGVXX ,SIGVYY ,SIGVXY  ,SIGVYZ  ,SIGVZX ,
A     SOUNDSP,VISCMAX,THK     ,PLA     ,UVAR   ,
B     OFF    ,NGL    ,SHF)
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. Stress are computed at each integration point.

You must 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
Where,
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:(1) c= E ( 1 υ 2 ) ρ 0 MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbwvMCKf MBHbqefqvATv2CG4uz3bIuV1wyUbqedmvETj2BSbqefm0B1jxALjhi ov2DaebbnrfifHhDYfgasaacH8srps0lbbf9q8WrFfeuY=Hhbbf9v8 qqaqFr0xc9pk0xbba9q8WqFfea0=yr0RYxir=Jbba9q8aq0=yq=He9 q8qqQ8frFve9Fve9Ff0dmeaacaGacmGadaWaaiqacaabaiaafaaake aabaGaam4yaiaad2dadaGcaaqaamaalaaabaGaamyraaqaamaabmaa baGaaeymaiabgkHiTiaadw8adaahaaWcbeqaaiaabkdaaaaakiaawI cacaGLPaaacaWGbpWaaSbaaSqaaiaabcdaaeqaaaaaaOqabaaaaaa@4302@

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).
NPT Integer read only scalar Number of layers or integration points.
IPT Integer read only scalar Current layer or interrogation point.
IFLAG Integer array read only scalar Array of size NEL with geometrical flags.
TF Integer array private data Array used by FINTER (float external function).
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.
THKLY Float array write only Array of size NEL with the layer thickness at each integration point.
EPSPXX, EPSPYY, EPSPXY, EPSPYZ, EPSPZX Float array read only Arrays of size NEL containing ε strain rates in directions XX and YY and γ strains in directions XY, YZ, and ZX.
DEPSXX, DEPSYY, DEPSXY, DEPSYZ, DEPSZX Float array read only Arrays of size NEL containing ε strain increments in directions XX and YY and γ strain increments in directions XY, YZ, and ZX.
EPSXX, EPSYY, EPSXY, EPSYZ, EPSZX Float array read only Array of size NEL containing ε strains in directions XX and YY and γ 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.
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.
THK Float array read write Array of size NEL containing total thickness.
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.

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

With QEPH, you must provide Radioss information relative to plasticity so that physical stabilization can be accurately calculated. Yield value and value Et/E (tangent modulus divided by Young’s modulus) must be given back to Radioss in the user law (SIGEPS29C.F, SIGEPS30C.F, or SIGEPS31C.F) to be compatible with the QEPH element.

This can be done through a call to routine SET_U_SHLPLAS.

The prototype of this routine and the necessary data to provide are:
C-------------------------------------------------------------------------
C     New routine : SET_U_SHLPLAS allows to return to Altair Radioss,
C                                Yield and Et/E for all elements.
C
C      Description of the arguments to be given to 
C      SET_U_SHLPLAS(NEL,YLD,ETSE) :
C---------+-----------+---+----------------------------------------------
C VAR     | SIZE      |TYP| DEFINITION
C---------+-----------+---+----------------------------------------------
C NEL     |  1          | I  |   NUMBER OF ELEMENTS
C YLD     |  NEL     | F |  YIELD VALUE FOR EACH ELEMENT,
C                              (FOR THE CURRENT INTEGRATION POINT)
C ETSE    |  NEL     | F |  VALUE FOR EACH ELEMENT,
C                              AND THE CURRENT INTEGRATION POINT OF :
C                            ETSE = 1             in case of an elastic increment
C                                     = H/(H+E)   in case of a plastic increment
C          where H : plastic tangent modulus, 
C                 E : Young modulus
C---------+---------+---+---+--------------------------------------------

The arrays YLD and ETSE, defined in the routine SET_U_SHLPLAS, have to be declared as local variables in the user material routines SIGEPS29C.F, SIGEPS30C.F, and SIGEPS30C.F with a sufficiently-long NEL.

Use the following statement in case these routines are compiled with a compiler that supports Fortran 90.
DOUBLE PRECISION YLD(NEL), ETSE(NEL)
This statement is not possible if the compiler only supports Fortran 77, since NEL is set by Radioss and given as an argument to the user routine. Therefore, the dynamic allocation is intended in this statement. In this case, use the following statement.
DOUBLE PRECISION YLD(4096), ETSE(4096)

The statement must be sufficient in all cases, meaning the value of NEL given from Radioss to the user routine should be less than 4096.