UDAMAGEMF

User subroutine to define damage evolution at the macro-level for a composite modeled with mean-field homogenization.

User subroutine UDAMAGEMF:

  • can be used to define the overall damage variable, D, for a composite modeled with mean field homogenization;
  • will be called at each integration point for elements with mean field damage defined as user-specified; and
  • allows you to specify a separate damage variable, diint, for each constituent, i, which is used to account for the additional contribution to the overall damage behavior due to interactions between the constituents.

This page discusses:

User Subroutine Interface

      SUBROUTINE UDAMAGEMF(SDEGMACRO,SDEGMICRO,NPHASES,CMNAME,CPHASENAME,
     1 NMICROI,NMICROR,IMICROPROPS,RMICROPROPS,STATEV,
     2 NSTATEV,PROPS,NPROPS,COORDS,NDI,NSHR,
     3 SECLAYO, JPHASE2MAT, JMAC, JMATYP, LACCFLG,
     4 NOEL, NPT, LAYER, KSPT,
     5 KSTEP, KINC, DT, TIME)
C
      INCLUDE 'ABA_PARAM.INC'
C      
C     PROPERTIES IN IMICROPROPS
      PARAMETER (I_PHASETYPE=1, I_SHAPE=2)

C     PROPERTIES IN RMICROPROPS
      PARAMETER (I_VOLFRAC=1, I_AR=2)
C
C     PHASE TYPES
      PARAMETER (I_TYPE_MATRIX=1, I_TYPE_INCLUSION=2, I_TYPE_VOID=3)
C
C     SHAPE TYPES
      PARAMETER (I_SHAPE_SPHERE=1, I_SHAPE_CYLINDER=2, I_SHAPE_PENNY=3,
     1 I_SHAPE_OBLATE=4, I_SHAPE_PROLATE=5, I_SHAPE_ELLIPCYL=9)

      DIMENSION TIME(2), SDEGMICRO(NPHASES), JPHASE2MAT(NPHASES)
      DIMENSION IMICROPROPS(NMICROI, NPHASES), RMICROPROPS(NMICROR,NPHASES)
     1 STATEV(NSTATEV), PROPS(NPROPS), ARRAY(15), JARRAY(15), COORDS(*)
     2 JMAC(*), JMATYP(*)
      CHARACTER*3 FLGRAY(15)
      CHARACTER*80 CMNAME
      CHARACTER*80 CPHASENAME(NPHASES)      

      user coding to define SDEGMICRO


      RETURN
      END

Variables to Be Defined

SDEGMACRO
The overall damage variable of the composite D.
SDEGMICRO(NPHASES)
Array of damage variables diint in all constituents. The values are set to zero by default.

Variables That Can Be Updated

STATEV(NSTATEV)
Array containing the solution-dependent state variables defined at the composite level.

Variables Passed in for Information

NPHASES

Number of constituents in the composite.

CMNAME

Name of the composite material.

CPHASENAME

Character array containing the name of the constituents.

NMICROI

Number of integer value micro-level properties of each constituent, such as the shape of the constituent.

NMICROR

Number of real value micro-level properties of each constituent, such as the volume fraction of the constituent.

IMICROPROPS(NMICROI, NPHASES)

An integer array containing micro-level properties of the constituents.

RMICROPROPS(NMICROR, NPHASES)

A real array containing micro-level properties of the constituents.

NSTATEV

User-defined number of solution-dependent state variables.

PROPS(NPROPS)

User-specified array of parameters used to define macro-level damage.

COORDS

An array containing the coordinates of this point. These are the current coordinates if geometric nonlinearity is accounted for during the step; otherwise, the array contains the original coordinates of the point.

NDI

Number of direct stress components at this point.

NSHR

Number of shear stress components at this point.

SECLAYO

Variable that must be passed into the GETVRM_MF utility routine. The calling user subroutine provides this variable.

JPHASE2MAT

Variable that must be passed into the GETVRM_MF utility routine. The calling user subroutine provides this variable.

JMAC

Variable that must be passed into the GETVRM_MF utility routine. The calling user subroutine provides this variable.

JMATYP

Variable that must be passed into the GETVRM_MF utility routine. The calling user subroutine provides this variable.

SECLAYO

Variable that must be passed into the GETVRM_MF utility routine. The calling user subroutine provides this variable.

LACCFLG

Variable that must be passed into the GETVRM_MF utility routine. The calling user subroutine provides this variable.

NOEL

Element number.

NPT

Integration point number.

LAYER

Layer number (for composite shells and layered solids).

KSPT

Section point number within the current layer.

KSTEP

Step number.

KINC

Increment number.

DT

Time increment.

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.

Example: User-Defined Damage Model

As an example of user subroutine UDAMAGEMF, consider a composite material with macro-level damage defined as follows (damage is also defined in the matrix material):

*MATERIAL, NAME=MAT
         *MEAN FIELD HOMOGENIZATION, FORMULATION=MT, UNIFORM MATRIX STRAIN=YES
         *MEAN FIELD DAMAGE, DEGRADATION=USER, PROPERTIES=2
          0.2, 0.05
         *CONSTITUENT, MATERIAL=EPOXY, TYPE=MATRIX, NAME=MT_MATRIX
         *CONSTITUENT, MATERIAL=GLASS, TYPE=INCLUSION, NAME=MT1_GLASS, SHAPE=CYLINDER
          0.3,
         *CONSTITUENT, MATERIAL=GLASS, TYPE=INCLUSION, NAME=MT2_GLASS, SHAPE=SPHERE
          0.1,
         

A user-specified damage model is defined to take into account the additional damage in the inclusions caused by the damage in the matrix material. Twenty percent additional damage is added to the constituent with the cylinder shape, and five percent additional damage is added to the constituent with the name MT2_GLASS. These values are defined in the MEAN FIELD DAMAGE data line.

      SUBROUTINE UDAMAGEMF(SDEGMACRO,SDEGMICRO, NPHASES, CMNAME,CPHASENAME,
     1 NMICROI, NMICROR, IMICROPROPS, RMICROPROPS, STATEV,
     2 NSTATEV, PROPS, NPROPS, COORDS, NDI, NSHR,
     3 SECLAYO, JPHASE2MAT, JMAC, JMATYP, LACCFLG,
     4 NOEL, NPT, LAYER, KSPT,
     5 KSTEP, KINC, DT, TIME)
C
      INCLUDE 'ABA_PARAM.INC'
C
      PARAMETER (I_PHASETYPE=1, I_SHAPE=2)
      PARAMETER (I_VOLFRAC=1, I_AR=2)
C
C     PHASE TYPES
      PARAMETER (I_TYPE_MATRIX=1, I_TYPE_INCLUSION=2, I_TYPE_VOID=3)
C
C     SHAPE TYPES
      PARAMETER (I_SHAPE_SPHERE=1, I_SHAPE_CYLINDER=2, I_SHAPE_PENNY=3,
     1 ISHAPE_OBLATE=4, I_SHAPE_PROLATE=5 ,I_SHAPE_ELLIPCYL=9)
C
      DIMENSION TIME(2), SDEGMICRO(NPHASES), JPHASE2MAT(NPHASES)
      DIMENSION IMICROPROPS(NMICROI, NPHASES), RMICROPROPS(NMICROR, NPHASES)
     1 STATEV(NSTATEV), PROPS(NPROPS), ARRAY(15), JARRAY(15), COORDS(*)
     2 JMAC(*), JMATYP(*)
      CHARACTER*3 FLGRAY(15)
      CHARACTER*80 CMNAME
      CHARACTER*80 CPHASENAME(NPHASES)

      PARAMETER (ZERO=0.0)
C
C     GET OVERALL DAMAGE VARIABLE IN THE MATRIX
C
      SDEGMATRIX=ZERO
      DO KPHASE=1,NPHASES
         IF (IMICROPROPS(I_PHASETYPE,KPHASE).eq.I_TYPE_MATRIX) then
            CALL GETVRM_MF('SDEG', KPHASE, JPHASE2MAT,
     1           ARRAY, JARRAY, FLGRAY, JRCD,JMAC, JMATYP,
     2           SECLAYO, LACCFLG) 
            IF(JRCD.EQ.0)SDEGMATRIX=ARRAY(1)
         END IF
      END DO      
C
C     SPECIFY ADDITIONAL CONTRIBUTION FROM EACH CONSTITUENT
C     USING A FRACTION OF THE MATRIX DEGRADATION FACTOR.
C      
      SC1=PROPS(1)
      SC2=PROPS(2)
      DO KPHASE=1, NPHASES
         SC=ZERO
         IF( IMICROPROPS(I_SHAPE,KPHASE).eq.I_SHAPE_CYLINDER ) THEN
             SC=SC1
         ELSE IF( CPHASENAME(KPHASE)(1:3).eq.'MT2' ) THEN
             SC=SC2
         END IF
         SDEGMICRO(KPHASE)=SC*SDEGMATRIX
      END DO

      RETURN
      END