Material Point Deletion
Material points that satisfy a user-defined failure criterion can be deleted
from the model (see
User-Defined Mechanical Material Behavior).
You must specify the state variable number controlling the element deletion
flag when you allocate space for the solution-dependent state variables, as
explained in
User-Defined Mechanical Material Behavior.
The deletion state variable can be set to a value of one or zero inside user
subroutine
VUMULLINS. A value of one indicates that the material point is
active, and a value of zero indicates that
Abaqus/Explicit
should delete the material point from the model by setting the stresses to
zero. The structure of the block of material points passed to user subroutine
VUMULLINS remains unchanged during the analysis; deleted material
points are not removed from the block.
Abaqus/Explicit
will “freeze” the values of the strain energy density passed to user subroutine
VUMULLINS for all deleted material points; that is, the values
remain constant after deletion is triggered. Once a material point has been
flagged as deleted, it cannot be reactivated.
User Subroutine Interface
subroutine vumullins (
C Read only (unmodifiable) variables –
1 nblock,
2 jElem, kIntPt, kLayer, kSecPt,
3 cmname,
4 nstatev, nfieldv, nprops,
5 props, tempOld, tempNew, fieldOld, fieldNew,
6 stateOld, enerDamageOld,
7 uMaxOld, uMaxNew, uDev,
C Write only (modifiable) variables –
8 eta, detaDuDev,
9 stateNew, enerDamageNew )
C
include 'vaba_param.inc'
C
dimension props(nprops),
1 tempOld(nblock),
2 fieldOld(nblock,nfieldv),
3 stateOld(nblock,nstatev),
4 tempNew(nblock),
5 fieldNew(nblock,nfieldv),
6 enerDamageOld(nblock),
7 uMaxOld(nblock), uMaxNew(nblock),
8 uDev(nblock),
9 eta(nblock), detaDuDev(nblock),
1 stateNew(nblock,nstatev),
2 enerDamageNew(nblock)
C
character*80 cmname
C
do 100 km = 1,nblock
user coding
100 continue
return
end
Variables to Be Defined
- eta(nblock)
-
The damage variable, .
- detaDuDev(nblock)
-
The derivative of the damage variable with respect to the deviatoric elastic
strain energy density of the undamaged material, ,
when the primary material behavior is hyperelastic. The derivative of the
damage variable with respect to the total elastic strain energy density of the
undamaged material, ,
when the primary material behavior is hyperfoam. This quantity is needed for
the evaluation of the effective moduli of the material, which enters the stable
time increment calculation.
Variables That Can Be Updated
- stateNew(nblock,nstatev)
-
State variables at each material point at the end of the increment. You
define the size of this array by allocating space for it (see
About User Subroutines and Utilities
for more information).
- enerDamageNew(nblock)
-
The energy dissipation density at the end of the increment. This quantity
can be defined either in total form or in an incremental manner using the old
value of the damage dissipation enerDamageOld
and the increment in damage dissipation. This quantity is used for output
purposes only.
Variables Passed in for Information
- nblock
-
Number of material points to be processed in this call to
VUMULLINS.
- jElem(nblock)
-
Array of element numbers.
- kIntPt
-
Integration point number.
- kLayer
-
Layer number (for composite shells).
- kSecPt
-
Section point number within the current layer.
- cmname
-
User-specified material name, left justified. It is passed in as an
uppercase character string. Some internal material models are given names
starting with the “ABQ_” character string. To
avoid conflict, you should not use “ABQ_” as
the leading string for cmname.
- nstatev
-
Number of user-defined state variables that are associated with this
material type (you define the number as described in
Allocating Space for Solution-Dependent State Variables).
- nfieldv
-
Number of user-defined external field variables.
- nprops
-
User-specified number of user-defined material properties.
- props(nprops)
-
User-supplied material properties.
- tempOld(nblock)
-
Temperatures at each material point at the beginning of the increment.
- tempNew(nblock)
-
Temperatures at each material point at the end of the increment.
- fieldOld(nblock,nfieldv)
-
Values of the user-defined field variables at each material point at the
beginning of the increment.
- fieldNew(nblock,nfieldv)
-
Values of the user-defined field variables at each material point at the end
of the increment.
- stateOld(nblock,nstatev)
-
State variables at each material point at the beginning of the increment.
- enerDamageOld(nblock)
-
The value of energy dissipated at the beginning of the increment.
- uMaxOld(nblock)
-
The value, at the beginning of the increment, of the maximum primary strain
energy density over its entire deformation history.
- uMaxNew(nblock)
-
The value, at the end of the increment, of the maximum primary strain energy
density over its entire deformation history.
- uDev(nblock)
-
The value, at the end of the increment, of the deviatoric primary strain
energy density, ,
when the primary material behavior is hyperelastic. The value, at the end of
the increment, of the total primary strain energy density,
,
when the primary material behavior is hyperfoam.
Example: Hyperelasticity with Softening
As a simple example of the coding of user subroutine
VUMULLINS, consider the following damage model based on the
softening hyperelasticity approach proposed by Volokh (2007). The damage
variable is assumed to vary with the deformation according to
where
is the maximum value of
at a material point during its deformation history,
is the deviatoric part of the strain energy density of the undamaged
hyperelastic behavior, and
is a material parameter with units of strain energy density. The energy
dissipation function for this model takes the form
It can be shown that the functions
and
satisfy the following condition:
The code in user subroutine
VUMULLINS must return the damage variable, ;
the derivative of the damage variable with respect to the elastic strain energy
density of the undamaged material, ;
and the energy dissipation .
The user subroutine would be coded as follows:
subroutine vumullins (
C Read only (unmodifiable) variables –
1 nblock,
2 jElem, kIntPt, kLayer, kSecPt,
3 cmname,
4 nstatev, nfieldv, nprops,
5 props, tempOld, tempNew, fieldOld, fieldNew,
6 stateOld, enerDamageOld,
7 uMaxOld, uMaxNew, uDev,
C Write only (modifiable) variables –
8 eta, detaDuDev,
9 stateNew, enerDamageNew )
C
include 'vaba_param.inc'
C
dimension props(nprops),
1 tempOld(nblock),
2 fieldOld(nblock,nfieldv),
3 stateOld(nblock,nstatev),
4 tempNew(nblock),
5 fieldNew(nblock,nfieldv),
6 enerDamageOld(nblock),
7 uMaxOld(nblock), uMaxNew(nblock),
8 uDev(nblock),
9 eta(nblock), detaDuDev(nblock),
1 stateNew(nblock,nstatev),
2 enerDamageNew(nblock)
C
character*80 cmname
C
parameter ( zero = 0.d0, one = 1.d0 )
C
u0 = props(1)
u0Inv = zero
if ( u0 .gt. zero ) u0Inv = one / u0
C
do k=1, nblock
eta(k) = exp( -uMaxNew(k) * u0Inv )
detaDUdev(k) = zero
if ( uMaxNew(k) .gt. uMaxOld(k) )
1 detaDUdev(k) = -u0Inv * eta(k)
enerDamageNew(k) = u0*(one-eta(k)+eta(k)*log(eta(k)))
end do
C
return
end
Additional Reference
- Volokh, K. Y., “Hyperelasticity
with Softening for Modeling Materials
Failure,” Journal of the Mechanics and
Physics of
Solids, vol. 55, pp. 2237–2264, 2007.
|