Product: ABAQUS/Standard
User subroutine UGENS:
is used to define the (nonlinear) mechanical behavior of a shell section directly in terms of generalized section quantities;
requires you to define the section behavior of the shell directly in terms of membrane stresses and forces, curvature changes, and bending moments;
will be called at all integration points in all shell elements with a general, arbitrary, elastic shell section and a user-subroutine-defined shell section stiffness; and
can be used with all static or dynamic procedures other than the quasi-static procedure, since that procedure uses automatic time stepping based on the techniques used by ABAQUS/Standard to integrate standard creep laws.
In the force and strain arrays and in the matrix DDNDDE, direct membrane terms are stored first, followed by the shear membrane term, and then the direct and shear bending terms. Only active components are stored, so the number of entries depends on the element type (see Table 25.2.241).
Table 25.2.241 Active section force/moment components.
Element type | Force and moment components |
---|---|
Three-dimensional shells (S4R, S8R, S8R5, etc) and axisymetric shells with asymmetric deformation (SAXA1N, SAXA2N) | , , , , , |
Axisymmetric shells (SAX1, SAX2, etc) | , , , |
There are NDI direct membrane and NSHR shear membrane components and NDI direct bending and NSHR shear bending components: a total of NSECV components. The order of the components is defined in Using a general shell section to define the section behavior, Section 15.6.6.
Engineering measures of shear membrane strain () and twist () are used.
ABAQUS/Standard passes zero strain increments into user subroutine UGENS to start the first increment of all the steps and all increments of steps for which you have suppressed extrapolation in time from the previous incremental solution (Procedures: overview, Section 6.1.1). In this case you can define only the section stiffness (DDNDDE).
You should ensure that the integration scheme coded in this routine is stable—no direct provision is made to include a stability limit in the time stepping scheme based on the calculations in UGENS.
DDNDDE must be defined accurately if rapid convergence of the overall Newton scheme is to be achieved. In most cases the accuracy of this definition is the most important factor governing the convergence rate. Unsymmetric equation solution is as much as four times as expensive as the corresponding symmetric system. Therefore, if the section stiffness matrix (DDNDDE) is only slightly unsymmetric, it may be computationally less expensive to use a symmetric approximation and accept a slightly slower rate of convergence.
If user subroutine UGENS is used to describe the section behavior of shells with transverse shear, you must define the transverse shear stiffness (see Defining the transverse shear stiffness” in “Using a general shell section to define the section behavior, Section 15.6.6).
If user subroutine UGENS is used to describe the section behavior of shells with hourglass stiffness, you must define the hourglass stiffness parameter for hourglass control based on total stiffness (see Specifying nondefault hourglass control parameters for reduced-integration shell elements” in “Using a general shell section to define the section behavior, Section 15.6.6). The hourglass stiffness parameter is not required for enhanced hourglass control, but you can define a scaling factor for the stiffness associated with the drill degree of freedom (rotation about the surface normal).
If user subroutine UGENS is used to describe the section behavior of continuum shell elements, you must define the effective thickness modulus (see Defining a change in thickness for continuum shell elements” in “Using a general shell section to define the section behavior, Section 15.6.6).
SUBROUTINE UGENS(DDNDDE,FORCE,STATEV,SSE,SPD,PNEWDT,STRAN, 1 DSTRAN,TSS,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CENAME,NDI, 2 NSHR,NSECV,NSTATV,PROPS,JPROPS,NPROPS,NJPROP,COORDS,CELENT, 3 THICK,DFGRD,CURV,BASIS,NOEL,NPT,KSTEP,KINC,NIT,LINPER) C INCLUDE 'ABA_PARAM.INC' C CHARACTER*80 CENAME DIMENSION DDNDDE(NSECV,NSECV),FORCE(NSECV),STATEV(NSTATV), 1 STRAN(NSECV),DSTRAN(NSECV),TSS(2),TIME(2),PREDEF(*), 2 DPRED(*),PROPS(*),JPROPS(*),COORDS(3),DFGRD(3,3), 3 CURV(2,2),BASIS(3,3) user coding to define DDNDDE, FORCE, STATEV, SSE, PNEWDT RETURN END
DDNDDE(NSECV,NSECV)
Section stiffness matrix of the shell section, , where are the section forces and moments on the shell section and are the generalized section strains in the shell. DDNDDE(I,J) defines the change in the Ith force component at the end of the time increment caused by an infinitesimal perturbation of the Jth component of the section strain increment array. The size of this matrix depends on the values of NSECV (see below for details).
Unless you invoke the unsymmetric equation solution capability in the general shell section definition (Defining whether or not the section stiffness matrices are symmetric” in “Using a general shell section to define the section behavior, Section 15.6.6), ABAQUS/Standard will use only the symmetric part of DDNDDE. The symmetric part of the matrix is calculated by taking one half the sum of the matrix and its transpose.
FORCE(NSECV)
This array is passed in as the forces and moments per unit length on the shell surface at the beginning of the increment and must be updated in this routine to be the forces and moments at the end of the increment.
STATEV(NSTATV)
An array containing the solution-dependent state variables. These are passed in as the values at the beginning of the increment and must be returned as the values at the end of the increment.
SSE, SPD
Elastic strain energy and plastic dissipation, respectively. These are passed in as the values at the beginning of the increment and should be updated to the corresponding energy values at the end of the increment. These values have no effect on the solution; they are used for the energy output.
PNEWDT
Ratio of suggested new time increment to the time increment being used (DTIME, see below). This variable allows you to provide input to the automatic time incrementation algorithms in ABAQUS/Standard (if automatic time incrementation is chosen).
PNEWDT is set to a large value before each call to UGENS.
If PNEWDT is redefined to be less than 1.0, ABAQUS/Standard must abandon the time increment and attempt it again with a smaller time increment. The suggested new time increment provided to the automatic time integration algorithms is PNEWDT × DTIME, where the PNEWDT used is the minimum value for all calls to user subroutines that allow redefinition of PNEWDT for this iteration.
If PNEWDT is given a value that is greater than 1.0 for all calls to user subroutines for this iteration and the increment converges in this iteration, ABAQUS/Standard may increase the time increment. The suggested new time increment provided to the automatic time integration algorithms is PNEWDT × DTIME, where the PNEWDT used is the minimum value for all calls to user subroutines for this iteration.
If automatic time incrementation is not selected in the analysis procedure, values of PNEWDT that are greater than 1.0 will be ignored and values of PNEWDT that are less than 1.0 will cause the job to terminate.
STRAN(NSECV)
An array containing the generalized section strains (membrane strains and curvature changes) at the beginning of the increment. The size of this array depends on the value of NSECV (see below for details).
DSTRAN(NSECV)
Array of generalized section strain increments.
TSS(2)
Array containing the transverse shear strains.
TIME(1)
Value of step time at the beginning of the current increment.
TIME(2)
Value of total time at the beginning of the current increment.
DTIME
Time increment.
TEMP
Temperature at the start of the increment.
DTEMP
Increment of temperature.
PREDEF
Array of interpolated values of predefined field variables at this point at the start of the increment, based on the values read in at the nodes.
DPRED
Array of increments of predefined field variables.
CENAME
User-specified element set name associated with this section, left justified.
NDI
Number of direct force components at this point.
NSHR
Number of shear force components at this point.
NSECV
Size of the force and strain component arrays.
NSTATV
User-defined number of solution-dependent state variables associated with this section (Defining the number of solution-dependent variables that must be stored for the section” in “Using a general shell section to define the section behavior, Section 15.6.6).
PROPS(NPROPS)
A floating point array containing the NPROPS real property values defined for use with this section.
JPROPS(NJPROP)
An integer array containing the NJPROP integer property values defined for use with this section.
NPROPS
User-defined number of real property values associated with this section (Defining the section properties” in “Using a general shell section to define the section behavior, Section 15.6.6).
NJPROP
User-defined number of integer property values associated with the element (Defining the section properties” in “Using a general shell section to define the section behavior, Section 15.6.6).
COORDS
An array containing the current coordinates of this integration point.
CELENT
Characteristic element length in the reference surface.
THICK
Original section thickness.
DFGRD(3,3)
An array containing the components of the midsurface deformation gradient, . The deformation gradient curvature tensor is available for finite-strain shells (S3/S3R, S4, S4R, SAXs, and SAXAs); it is not available for small-strain shells.
The deformation gradient is stored as a 3 × 3 matrix with component equivalence DFGRD(I,J). (Greek subscripts range from 1 to 2) are the in-plane components of the deformation gradient, and is the thickness change component. The components, , are the transverse shear strains scaled by . The remaining components, , are all zero.
The tensor is provided in the local shell coordinate system.
CURV(2,2)
An array containing the midsurface curvature tensor, . The curvature tensor is available for finite-strain shells (S3/S3R, S4, S4R, SAXs, and SAXAs); it is not available for small-strain shells.
The curvature tensor is stored as a 2 × 2 matrix with component equivalence CURV(I,J) .
The tensor is provided in the local shell coordinate system.
BASIS(3,3)
An array containing the direction cosines of the shell local surface coordinate system. BASIS(1,1), BASIS(2,1), and BASIS(3,1) give the (1, 2, 3) components of the first local direction, etc. The first two directions are in the plane of the element surface, and the third direction is the normal. The conventions for local directions on shell surfaces are defined in Conventions, Section 1.2.2. You can redefine the local system; see Orientations, Section 2.2.5.
NOEL
Element number.
NPT
Integration point number.
KSTEP
Step number.
KINC
Increment number.
NIT
Iteration number. NIT=0 during the first assembly of the system matrix in any increment.
LINPER
Linear perturbation flag. LINPER=1 if the step is a linear perturbation step. LINPER=0 if the step is a general step.