Storage of Membrane and Bending Components
The arrays of the section forces, moments, and curvatures contain
ndir + nshr components, with
ndir = 2 and nshr = 1 for
three-dimensional shells and ndir = 2 and
nshr = 0 for axisymmetric shells. The direct components (11
and 22) are stored first, followed by the indirect 12 component (for three-dimensional
shells). The arrays of section membrane strains and strain increments contain
(ndir +1) + nshr components,
where the additional direct component corresponds to the thickness strain.
The shear strain components in user subroutine VUGENS are stored as tensor
components, not as engineering components.
Stability
You should ensure that the integration scheme coded in this routine is stable.
Abaqus/Explicit uses the tangent stiffness matrix ddndde to compute an
effective modulus of the material, which in turn is used for the calculation of the stable
time increment. To ensure stability, the matrix ddndde
defined inside VUGENS should provide a conservative
estimate of the stiffness. The matrix ddndde is assumed to be
symmetric for efficiency reasons. If the constitutive response leads to nonsymmetric
stiffness, compute the symmetric part of the matrix by taking one half of the sum of the
matrix and its transpose.
Use with Shells That Have Transverse Shear
If user subroutine VUGENS 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).
This initial value of the transverse shear stiffness can be modified within
VUGENS by defining a
TVS DAMAGE factor.
Use with Continuum Shell Elements
User subroutine VUGENS cannot be used to
describe the section behavior of continuum shell elements.
User Subroutine Interface
subroutine vugens (
C Read only -
* nblock, ndir, nshr, nstatev, nfieldv,
* jElem, kIntPt, kIncr,
* stepTime, totalTime, dt,
* cElsetName, coordMp,
* strainInc, curvInc,
* tempOld, fieldOld,
* defgradOld, direct,
* forceOld, xmomOld, stateOld,
* enerInternOld, enerInelasOld,
* props, nprops, jprops, njprops,
* density, thick,
* tempNew, fieldNew,
* defgradNew, curvNew, gamma,
C Write only -
* ddndde,
* forceNew, xmomNew, stateNew,
* enerInternNew, enerInelasNew )
*
include 'vaba_param.inc'
*
character*80 cElsetName
*
dimension jElem(nblock),
* forceNew(nblock,ndir+nshr),
* forceOld(nblock,ndir+nshr),
* xmomNew(nblock,ndir+nshr),
* xmomOld(nblock,ndir+nshr),
* stateOld(nblock,nstatev),
* stateNew(nblock, nstatev),
* coordMp(nblock,3),
* strainInc(nblock,ndir+1+nshr),
* curvInc(nblock,ndir+nshr),
* ddndde(nblock,*),
* defgradNew(nblock,ndir+1+nshr+nshr),
* defgradOld(nblock,ndir+1+nshr+nshr),
* direct(nblock,3,3),
* curvNew(nblock,ndir+nshr),
* gamma(nblock, 2),
* tempNew(nblock),
* tempOld(nblock),
* fieldNew(nblock,nfieldv),
* fieldOld(nblock,nfieldv),
* props(nprops),
* density(nblock),
* thick(nblock),
* enerInternNew(nblock),
* enerInternOld(nblock),
* enerInelasOld(nblock),
* enerInelasNew(nblock)
Variables to Be Defined
-
ddndde(nblock, *)
-
Symmetric part of the 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. The components of
ddndde define the change at the end of the time
increment caused by an infinitesimal perturbation of the generalized section strain
increment array. The size of this matrix is (ndir +
nshr ) × ((ndir +
nshr) × 2 +1) corresponding to the triangular storage
of the symmetric part of
.
-
forceNew (nblock, ndir+nshr)
-
Array of section forces at each integration point at the end of the increment. Stored
as (
) for three-dimensional shells and as (
) for axisymmetric shells.
-
xmomNew (nblock, ndir+nshr)
-
Array of section moments at each integration point at the end of the increment.
Stored as (
) for three-dimensional shells and as (
) for axisymmetric shells.
-
stateNew(nblock, nstatev)
-
State variables at each integration point at the end of the increment. You define the
size of this array by allocating space for it using the
VARIABLES parameter in the
SHELL GENERAL SECTION option.
Variables That Can Be Updated
-
enerInternNew(nblock)
-
Internal energy per unit mass at each integration point at the end of the
increment.
-
enerInelasNew(nblock)
-
Dissipated inelastic energy per unit mass at each integration point at the end of the
increment.
Variables Passed in for Information
-
nblock
-
Number of integration points to be processed in this call to
VUGENS.
-
ndir
-
Number of direct components in a symmetric tensor.
-
nshr
-
Number of indirect components in a symmetric tensor.
-
jElem(nblock)
-
Array of element numbers.
-
kIntPt
-
Integration point number.
-
kIncr
-
Increment number.
-
nstatev
-
Number of user-defined state variables that are associated with this integration
point. You define this using the
VARIABLES parameter in the
SHELL GENERAL SECTION option.
-
nfieldv
-
Number of user-defined external field variables.
-
nprops
-
User-defined number of real property values associated with this section (Defining the Shell Section Behavior).
-
njprops
-
User-defined number of integer property values associated with this section (Defining the Shell Section Behavior).
-
stepTime
-
Value of time since the step began.
-
totalTime
-
Value of total time. The time at the beginning of the step is given by
totalTime -
stepTime.
-
dt
-
Time increment size.
-
cElsetName
-
User-specified element set name associated with this section, left justified.
-
coordMp(nblock, *)
-
An array containing the current coordinates for each integration point.
-
direct(nblock, 3, 3)
-
An array containing the direction cosines of the shell local surface coordinate
system. For integration point k, direct(k,1,1),
direct(k,2,1), and
direct(k,3,1) give the (1, 2, 3) components of the
first material direction; direct(k,1,2),
direct(k,2,2), and
direct(k,3,2) give the second material direction,
etc. The first two directions are in the plane of the element, and the third direction
is the normal.
-
props(nprops)
-
A floating point array containing the nprops real
property values defined for use with this section.
-
jprops(njprops)
-
An integer array containing the njprops integer
property values defined for use with this section.
-
density(nblock)
-
Current density at the integration points.
-
strainInc(nblock, ndir+1+nshr)
-
Array of membrane strain increments at each integration point. Stored as (
) for three-dimensional shells and as (
) for axisymmetric shells.
-
curvInc(nblock, ndir+1+nshr)
-
Array of curvature increments at each integration point. Stored as (
) for three-dimensional shells and as (
) for axisymmetric shells.
-
tempOld(nblock)
-
Temperatures at each integration point at the beginning of the increment.
-
defgradOld(nblock, ndir+1+nshr+nshr)
-
Midsurface deformation gradient tensor at each integration point at the beginning of
the increment. Stored in three dimensions as (
) and in two dimensions as (
).
The deformation gradient curvature tensor is available for finite-strain shells, but
it is not available for small-strain shells. The tensor is provided in the local shell
coordinate system.
-
fieldOld(nblock, nfieldv)
-
Values of the user-defined field variables at each integration point at the beginning
of the increment.
-
forceOld (nblock, ndir+nshr)
-
Array of section forces at each integration point at the beginning of the increment.
Stored as (
) for three-dimensional shells and as (
) for axisymmetric shells.
-
xmomOld (nblock, ndir+nshr)
-
Array of section moments at each integration point at the beginning of the increment.
Stored as (
) for three-dimensional shells and as (
) for axisymmetric shells.
-
stateOld(nblock, nstatev)
-
State variables at each integration point at the beginning of the increment.
-
enerInternOld(nblock)
-
Internal energy per unit mass at each integration point at the beginning of the
increment.
-
enerInelasOld(nblock)
-
Dissipated inelastic energy per unit mass at each integration point at the beginning
of the increment.
-
tempNew(nblock)
-
Temperatures at each integration point at the end of the increment.
-
defgradNew(nblock, ndir+1+nshr+nshr)
-
Midsurface deformation gradient tensor at each integration point at the end of the
increment. Stored in three dimensions as (
) and in two dimensions as (
).
The deformation gradient curvature tensor is available for finite-strain shells, but
it is not available for small-strain shells. The tensor is provided in the local shell
coordinate system.
-
fieldNew(nblock, nfieldv)
-
Values of the user-defined field variables at each integration point at the end of
the increment.
-
curvNew(nblock, ndir+1+nshr)
-
An array containing the curvature tensor at each integration point at the end of the
increment. Stored as (
) for three-dimensional shells and as (
) for axisymmetric shells.
The tensor is provided in the local shell coordinate system.
-
gamma(nblock, 2)
-
Transverse shear strains at each integration point.
-
thick(nblock)
-
Section thickness at each integration point.
|