ProductsAbaqus/Explicit Material point deletionMaterial 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
Variables that can be updated
Variables passed in for information
Example: Hyperelasticity with softeningAs 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
|