12 December 2018 0 4K Report

I use the UMAT for ABAQUS, but I meet a problem can't be solved, a job error always exists: 'The executable standard.exe aborted with system error code 1073741819. Please check the .dat, .msg, and .sta files for error messages if the files exist. ' I am sure that there are no

syntax error in my code. following is my code.

C

SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,

1 RPL,DDSDDT,DRPLDE,DRPLDT,

2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDET,DPRED,CMNAME,

3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,

4 CELENT,DFGRDO,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)

C

INCLUDE 'ABA_PARAM.INC'

C

CHARACTER*80 CMNAME

DIMENSION STRESS(NTENS),STATEV(NSTATV),

1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),

2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),

3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)

C

DIMENSION STRANT(NTENS), DDDE(6), ATEMP1(6)

DIMENSION CFULL(6,6),CDFULL(6,6),DCDD(6,6)

DIMENSION OLD_STRESS(6)

PARAMETER (ZERO = 0.D0,ONE =1.D0,TWO=2.D0,THREE=3.D0,HALF = 0.5D0)

C

C 定义材料参数

EE = PROPS(1) !杨氏模量

Viod = PROPS(2) !泊松比

Cm = PROPS(3) !基体压缩强度

Tm = PROPS(4) !基体拉伸强度

Yc = PROPS(5) !critical value of thermal conjugate force

C

C 更新应变

DO I = 1, NTENS

STRANT(I) = STRAN(I) + DSTRAN(I)

END DO

C

C 给上一步的应力赋值

S11 = STRESS(1)

S22 = STRESS(2)

S33 = STRESS(3)

S12 = STRESS(4)

S13 = STRESS(5)

S23 = STRESS(6)

C

C 计算应力不变量及热聚力能量

J1 = S11 + S22 + S33

I2 = S11 * S22 + S22 * S33 + S33 * S11 - (S12 * S12 + S23 * S23 +

1 S13 * S13)

xigmaeq = SQRT(J1 * J1 - THREE * I2)

YY = (xigmaeq/(2*EE))*((TWO/THREE)*(ONE+Viod)+

1 THREE*(1-TWO*Viod*(J1/(THREE*xigmaeq))))

C

C 损伤初始准则分母参数

xigmaeqc = SQRT(Cm * Tm)

J1c = (Cm * Tm) / (Cm - Tm)

D = ZERO

C

C 填写 6X6 全刚度矩阵

DO I = 1, 6

DO J = 1, 6

CFULL(I,J)=ZERO

END DO

END DO

ATEMP = (ONE + Viod)*(ONE - 2*Viod)

CFULL(1,1) = EE * (ONE - Viod) / ATEMP

CFULL(2,2) = CFULL(1,1)

CFULL(3,3) = CFULL(1,1)

CFULL(1,2) = EE * Viod / ATEMP

CFULL(1,3) = CFULL(1,2)

CFULL(2,3) = CFULL(1,2)

CFULL(4,4) = EE / (ONE + Viod) / 2

CFULL(5,5) = CFULL(4,4)

CFULL(6,6) = CFULL(4,4)

DO I = 2, 6

DO J = 1, I-1

CFULL(I,J) = CFULL(J,I)

END DO

END DO

C

C 检查损伤初始条件

DOLD = STATEV(1)

CALL CheckFailureIni(Yc,STRANT,CELENT, CFULL, D, DOLD, NTENS)

C

C 更新损伤变量

STATEV(1) = D

C

C 将 OLD STRESS 保存到 OLD_STRESS

DO I = 1, NTENS

OLD_STRESS(I) = STRESS(I)

END DO

C

C 调用应力获取函数,更新应力

CALL GetStress(CFULL,CDFULL,D,STRESS,STRANT,NTENS)

C

C 更新 JACOBIAN(常刚度法)

DO I = 1,NTENS

DO J =1,NTENS

DDSDDE(I,J) = CFULL(I,J)

END DO

END DO

C

C 结束程序

RETURN

END

C******************************************************************************

C TO CHECK THE FAILURE INITIATION*********

C******************************************************************************

SUBROUTINE CheckFailureIni(Yc,STRANT,CELENT,CFULL,D,DOLD,NTENS)

INCLUDE 'ABA_PARAM.INC'

DIMENSION STRANT(6), CFULL(6,6)

PARAMETER (ZERO = 0.D0, ONE = 1.D0, TWO = 2.D0)

C

C 检查损伤条件,更新损伤变量(不考虑粘性)

TERM = (xigmaeq / xigmaeqc)**TWO + (J1 / J1c)

IF (TERM .GT. ONE) THEN

D = ONE - EXP((-1) * TWO * (YY / Yc))

ELSE

D = ZERO

END IF

RETURN

END

C******************************************************************************

C CALCULATE THE STRESS BASED ON THE DAMAGE VARAIBLES***************************

C******************************************************************************

SUBROUTINE GetStress(CFULL,CDFULL,D,STRESS,STRANT,NTENS)

INCLUDE 'ABA_PARAM.INC'

DIMENSION CFULL(6,6),CDFULL(6,6),STRESS(NTENS), STRANT(6)

PARAMETER (ZERO=0.D0, ONE=1.D0)

DO I = 1, 6

DO J = 1, 6

CDFULL(I,J)=CFULL(I,J)

END DO

END DO

IF (D .NE. ZERO) THEN

CDFULL(1,1) = (ONE - D) * CFULL(1,1)

CDFULL(1,2) = (ONE - D) * CFULL(1,2)

CDFULL(1,3) = (ONE - D) * CFULL(1,3)

CDFULL(2,1) = (ONE - D) * CFULL(2,1)

CDFULL(2,2) = (ONE - D) * CFULL(2,2)

CDFULL(2,3) = (ONE - D) * CFULL(2,3)

CDFULL(3,1) = (ONE - D) * CFULL(3,1)

CDFULL(3,2) = (ONE - D) * CFULL(3,2)

CDFULL(3,3) = (ONE - D) * CFULL(3,3)

CDFULL(4,4) = (ONE - D) * CFULL(4,4)

CDFULL(5,5) = (ONE - D) * CFULL(5,5)

CDFULL(6,6) = (ONE - D) * CFULL(6,6)

END IF

C 更新应力

DO I = 1, NTENS

STRESS(I) = ZERO

DO J = 1, NTENS

STRESS(I)=STRESS(I)+CDFULL(I,J)*STRANT(J)

END DO

END DO

RETURN

END

Similar questions and discussions