ABAQUS路面材料使用修正burgers模型時總是出現編譯錯誤
C 瞬態溫度場下修正Burgers模型UMAT子程序源代碼
C
C 給狀態變量數組賦初值為零,調用ABAQUS子程序SDVINI
C GIVE STATEV THE INITIAL VALUE OF ZERO
C
SUBROUTINE SDVINI(STATEV,COORDS,NSTATV,NCRDS,NOEL,NPT,LAYER,KSPT)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION STATEV(NSTATV),COORDS(NCRDS)
C
DO K=1,NSTATV
STATEV(K)=0.0
END DO
C
RETURN
END
C 瞬態溫度場下修正Burgers模型UMAT子程序
C UMAT FOR MODIFIED BURGERS MODEL
C
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,RPL,DDSDDT,
1 DRPLDE,DRPLDT,STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,
2 CMNAME,NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,
3 PNEWDT,CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
C
DIMENSION STRESS(NTENS),STATEV(NSTATV),DDSDDE(NTENS,NTENS),
1 DDSDDT(NTENS),DRPLDE(NTENS),STRAN(NTENS),DSTRAN(NTENS),
2 TIME(2),PREDEF(1),DPRED(1),PROPS(NPROPS),COORDS(3),DROT(3,3),
3 DFGRD0(3,3),DFGRD1(3,3)
C
C LOCAL ARRAYS(定義局部數組,即用戶自己定義的數組)
C ----------------------------------------------------------------------------------------------------------------
C EELAS - ELASTIC STRAINS
C DEELA - ELASTIC STRAINS INCREMENT(dt)
C ECREE - CREEP STRAINS
C DECRE - CREEP STRAINS INCREMENT(dt)
C STREST - TEMPORARY ARRAY FOR SAVED STRESS(t+dt)
C DECRT - TEMPORARY ARRAY FOR SAVED CREEP STRAINS INCREMENT(dt)
C DSTREST- STRESS INCREMENT(dt)
C STREST2- TEMPORARY ARRAY FOR SAVED STRESS(t+θdt)
C DVSTRESS-DEVIATORIC STRESS(t+θdt)
C PARAM - ARRAY FOR SAVED MATERIAL PARAMETERS AT TEMPERATURE
C OF THE KSTEP
C ----------------------------------------------------------------------------------------------------------------
C
DIMENSION EELAS(6),ECREE(6),DECRE(6),DVSTRESS(6),STREST(6),
1 DECRT(6),DEELA(6),DSTREST(6),STREST2(6),PARAM(7),
2 TABLE(NPROPS/7,7),TABLE0(7),TABLE1(7)
C
PARAMETER(ZERO=0.D0,ONE=1.D0,TWO=2.D0,THREE=3.D0,SIX=6.D0,
1 ENUMAX=.4999D0,NEWTON=50,TOLER=1.0D-4)
C
C ----------------------------------------------------------------------------------------------------------------
C UMAT FOR MODIFIED BURGERS MODEL
C ----------------------------------------------------------------------------------------------------------------
C PARAMETERS OF MODIFIED BURGERS MODEL AT TRANSIENT TEMPERATURE
C FIELD(材料參數說明):
C PROPS(1)- T Temperature
C PROPS(2)- E0 Young's modulus of the Hookean spring
C PROPS(3)- μ0 Poisson's ratio
C PROPS(4)- E1 Young's modulus of the Kelvin Unit
C PROPS(5)- η1 Viscosity coef. of the Kelvin unit
C PROPS(6)- A
C PROPS(7)- B A and B are parameters of the seperate dashpot
C ---------------------------------------------------------------------------------------------------------------
C 定義初始時刻材料的瞬時彈性參數
NVALUE=NPROPS/7
IF(KINC.EQ.0)THEN
IF(NVALUE.EQ.1)THEN
DO K1=1,7
PARAM(K1)=PROPS(K1)
END DO
END IF
IF(NVALUE.GT.1)THEN
DO K1=1,NVALUE
DO K2=1,7
TABLE(K1,K2)=PROPS(7*(K1-1)+K2)
END DO
END DO
C 參數輸入應按溫度從小到大輸入
LOOP2:DO K1=1,NVALUE-1
TEMP1=TABLE(K1+1,1)
IF(TEMP.LT.TEMP1)THEN
TEMP0=TABLE(K1,1)
DO K2=1,7
TABLE1(K2)=TABLE(K1+1,K2)
TABLE0(K2)=TABLE(K1,K2)
END DO
DO K3=1,7
C 對不同溫度時的參數進行插值
PARAM(K3)=TABLE0(K3)+(TEMP-TEMP0)
1 *(TABLE1(K3)-TABLE0(K3))/(TEMP1-TEMP0)
END DO
EXIT LOOP2
END IF
END DO LOOP2
IF(TEMP.LT.TABLE(1,1).OR.TEMP.GT.TABLE(NVALUE,1))THEN
DO K1=1,7
TABLE1(K1)=TABLE(NVALUE,K1)
TABLE0(K1)=TABLE(1,K1)
END DO
C 對不同溫度時的參數進行插值
DO K2=1,7
PARAM(K2)=TABLE0(K2)+(TEMP-TABLE(1,1))*(TABLE1(K2)
1 -TABLE0(K2))/(TABLE(NVALUE,1)-TABLE(1,1))
END DO
END IF
END IF
END IF
EMOD=PARAM(2) !E0
ENU=PARAM(3) !μ0
IF(ENU.GT.0.4999.AND.ENU.LT.0.5001)ENU=0.499
EBULK3=EMOD/(ONE-TWO*ENU) !3K
EG2=EMOD/(ONE+ENU) !2G
EG=EG2/TWO !G
EG3=THREE*EG !3G
ELAM=(EBULK3-EG2)/THREE !λ
C 迭代之前獲取上一步的狀態變量
DO K1=1,NTENS
EELAS(K1)=STATEV(K1) !彈性應變
ECREE(K1)=STATEV(K1+NTENS) !蠕變應變
END DO
EQCRE=STATEV(1+2*NTENS) !等效蠕變應變
EQVSE=STATEV(2+2*NTENS) !等效粘性流動應變
EQVEE=STATEV(3+2*NTENS) !等效粘彈性應變
C 定義瞬時彈性性能
IF(KSTEP.EQ.1)THEN
C 形成初始時刻彈性剛度
DO K1=1,NTENS
DO K2=1,NTENS
DDSDDE(K1,K2)=ZERO
END DO
END DO
DO K1=1,NDI
DO K2=1,NDI
DDSDDE(K2,K1)=ELAM
END DO
DDSDDE(K1,K1)=EG2+ELAM
END DO
DO K1=NDI+1,NTENS
DDSDDE(K1,K1)=EG
END DO
C 根據彈性應變計算初始時刻應力
DO K1=1,NTENS
DO K2=1,NTENS
STRESS(K2)=STRESS(K2)+DDSDDE(K2,K1)*DSTRAN(K1)
END DO
EELAS(K1)=EELAS(K1)+DSTRAN(K1)
END DO
C
END IF
C
C------------------------------------------------------------------------------------------------------------------
C CALCULATE CREEP STRAIN(計算蠕變應變)
C------------------------------------------------------------------------------------------------------------------
IF(KSTEP.GT.1)THEN
C 采用常剛度迭代方案,剛度為初始時刻彈性剛度
DO K1=1,NTENS
DO K2=1,NTENS
DDSDDE(K1,K2)=ZERO
END DO
END DO
DO K1=1,NDI
DO K2=1,NDI
DDSDDE(K2,K1)=ELAM
END DO
DDSDDE(K1,K1)=EG2+ELAM
END DO
DO K1=NDI+1,NTENS
DDSDDE(K1,K1)=EG
END DO
C 求取t σ avg,t εc avg
SMISES1=(STRESS(1)-STRESS(2))**2+(STRESS(2)-STRESS(3))**2
1 +(STRESS(3)-STRESS(1))**2
DO K1=NDI+1,NTENS
SMISES1=SMISES1+SIX*STRESS(K1)**2
END DO
SMISES1=SQRT(SMISES1/TWO)
write(6,*)SMISES1
C 獲取t時刻材料參數E1,η1,A,B
E1=PARAM(4)
Y1=PARAM(5)
A=PARAM(6)
B=PARAM(7)
C 下面的參數分別表示對外置粘壺和內置粘壺的ε求導
EQVSER1=SMISES1*EXP(-1.0*B*TIME(1))/A
EQVEER1=SMISES1*EXP(-1.0*E1/Y1*TIME(1))/Y1
EQCRER1=EQVSER1+EQVEER1
C 迭代之前,認為t+Δt σ(0)(n+1)= t σ(n+1)
DO K1=1,NTENS
STREST(K1)=STRESS(K1)
END DO
C 給存儲蠕應變增量的數組賦初值為0
DO K1=1,NTENS
DECRT(K1)=0.0
END DO
C 非線性迭代過程,求取△ε(n+1)對應的△εc(n+1)和△σ(n+1)
LOOP1:DO KEWTON=1,NEWTON
C 求取t+△t σk(n+1),t+△t εck(n+1)
SMISES2=(STREST(1)-STREST(2))**2+(STREST(2)-STREST(3))**2
1 +(STREST(3)-STREST(1))**2
DO K1=NDI+1,NTENS
SMISES2=SMISES2+SIX*STREST(K1)**2
END DO
SMISES2=SQRT(SMISES2/TWO)
write(6,*)SMISES2
EQVSER2=SMISES2*EXP(-1.0*B*(TIME(1)+DTIME))/A
EQVEER2=SMISES2*EXP(-1.0*E1/Y1*(TIME(1)+DTIME))/Y1
EQCRER2=EQVSER2+EQVEER2
C 求取t+θ△t σavg (k)(n+1)=(1-θ) t σavg(n+1)+θ t+△t σavg(k)(n+1)
C t+θ△t εcavg (k)(n+1)=(1-θ) t εcavg(n+1)+θ t+△t εcavg(k)(n+1)
SMISES3=0.2*SMISES1+0.8*SMISES2
write(6,*)SMISES3
EQCRER3=0.2*EQCRER1+0.8*EQCRER2
C 求取t+θ△t β(k)(n+1)=3/2* t+θ△t εcavg (k)(n+1) / t+θ△t σavg (k)(n+1)
TERM1=(THREE/TWO*EQCRER3)/SMISES3
C 求取t+θ△t σ(k)(n+1)=(1-θ) t σ(n+1)+θ t+△t σ(k)(n+1)
DO K1=1,NTENS
STREST2(K1)=0.2*STREST(K1)+0.8*STRESS(K1)
END DO
C 計算偏應力t+θ△t S(k)(n+1)
PRESS=0.0
DO K1=1,NDI
PRESS=PRESS+STREST2(K1)/THREE
END DO
DO K1=1,NDI
DVSTRESS(K1)=STREST2(K1)-PRESS
END DO
DO K2=NDI+1,NTENS
DVSTRESS(K2)=STREST2(K2)
END DO
C 計算蠕應變、彈性應變、等效蠕應變等的增量
DO K1=1,NTENS
DECRE(K1)=TERM1*DTIME*DVSTRESS(K1)
DEELA(K1)=DSTRAN(K1)-DECRE(K1)
END DO
DEQCRE=EQCRER3*DTIME
DEQVSE=(0.2*EQVSER1+0.8*EQVSER2)*DTIME
DEQVEE=(0.2*EQVEER1+0.8*EQVEER2)*DTIME
C 收斂判定abs(△εc(k+1)(n+1)-△εc(k)(n+1))/abs(△εc(k+1)(n+1))<=toler,則結束迭代
TERM2=0.0
TERM3=0.0
DO K1=1,NTENS
TERM2=TERM2+(DECRE(K1)-DECRT(K1))**2
TERM3=TERM3+DECRE(K1)**2
END DO
TERM4=SQRT(TERM2)
TERM5=SQRT(TERM3)
TERM6=TERM4/TERM5
IF(TERM6.LE.TOLER)THEN
EXIT LOOP1
END IF
C 求取t+△t σ(k+1)(n+1)=t σ+△σ(k)(n+1)
DO K1=1,NTENS
DSTREST(K1)=0.0
END DO
DO K1=1,NTENS
DO K2=1,NTENS
DSTREST(K1)=DSTREST(K1)+DDSDDE(K1,K2)*DEELA(K2)
END DO
END DO
DO K1=1,NTENS
STREST(K1)=STRESS(K1)+DSTREST(K1)
END DO
C 把蠕變增量保存到臨時數組DECRT中
DO K1=1,NTENS
DECRT(K1)=DECRE(K1)
END DO
END DO LOOP1
C 更新應力
DO K1=1,NTENS
STRESS(K1)=STREST(K1)
END DO
C 更新狀態變量,包括蠕變應變、彈性應變以及等效應變等
DO K1=1,NTENS
ECREE(K1)=ECREE(K1)+DECRE(K1)
EELAS(K1)=EELAS(K1)+DEELA(K1)
END DO
EQCRE=EQCRE+DEQCRE
EQVSE=EQVSE+DEQVSE
EQVEE=EQVEE+DEQVEE
C
END IF
C 更新JACOBIAN矩陣
DO K1=1,NTENS
DO K2=1,NTENS
DDSDDE(K1,K2)=ZERO
END DO
END DO
DO K1=1,NDI
DO K2=1,NDI
DDSDDE(K2,K1)=ELAM
END DO
DDSDDE(K1,K1)=EG2+ELAM
END DO
DO K1=NDI+1,NTENS
DDSDDE(K1,K1)=EG
END DO
C 保存狀態變量
DO K1=1,NTENS
STATEV(K1)=EELAS(K1)
STATEV(K1+NTENS)=ECREE(K1)
END DO
STATEV(1+2*NTENS)=EQCRE
STATEV(2+2*NTENS)=EQVSE
STATEV(3+2*NTENS)=EQVEE
C
RETURN
END
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















