1.2.23 VUMULLINS
User subroutine to define damage variable for the Mullins effect material model.

Product: Abaqus/Explicit  

References

Overview

User subroutine VUMULLINS:

Material point deletion

Material points that satisfy a user-defined failure criterion can be deleted from the model (see User-defined mechanical material behavior, Section 26.7.1 of the Abaqus Analysis User's Guide). 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, Section 26.7.1 of the Abaqus Analysis User's Guide. 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 User subroutines: overview, Section 18.1.1 of the Abaqus Analysis User's Guide, 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” in “User subroutines: overview, Section 18.1.1 of the Abaqus Analysis User's Guide).

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

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.