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
.
- SDEGMICRO(NPHASES)
- Array of damage variables
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
|