umat程序代码及注释文档格式.docx

上传人:b****5 文档编号:17511448 上传时间:2022-12-06 格式:DOCX 页数:16 大小:36.34KB
下载 相关 举报
umat程序代码及注释文档格式.docx_第1页
第1页 / 共16页
umat程序代码及注释文档格式.docx_第2页
第2页 / 共16页
umat程序代码及注释文档格式.docx_第3页
第3页 / 共16页
umat程序代码及注释文档格式.docx_第4页
第4页 / 共16页
umat程序代码及注释文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

umat程序代码及注释文档格式.docx

《umat程序代码及注释文档格式.docx》由会员分享,可在线阅读,更多相关《umat程序代码及注释文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

umat程序代码及注释文档格式.docx

C输入材料的强度参数,用于失效判断。

xt=props(10)

xc=props(11)

yt=props(12)

yc=props(13)

s12=props(14)

s13=props(15)

s23=props(16)

zt=props(17)

zc=props(18)

eta=props(19)粘性系数

gc1=props(20)复合材料的1方向的临界能量释放率

gc2=props(21)

gc3=props(22)

!

CFULL无损伤下的刚度阵

u21=(u12/e1)*e2

u31=(u13/e1)*e3

u32=(u23/e2)*e3

fact=1-u12*u21-u23*u32-u13*u31-

&

2*u21*u32*u13

factor=fact/(e1*e2*e3)

CFULL(1,1)=(1-u23*u32)/(e2*e3*factor)

CFULL(2,2)=(1-u13*u31)/(e1*e3*factor)

CFULL(3,3)=(1-u12*u21)/(e1*e2*factor)

CFULL(1,2)=(u12+u32*u13)/(e1*e3*factor)

CFULL(2,3)=(u32+u12*u31)/(e1*e3*factor)

CFULL(1,3)=(u31+u21*u32)/(e3*e2*factor)

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

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

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

CFULL(4,4)=g12

CFULL(5,5)=g13

CFULL(6,6)=g23

C

CRECOVERELASTICSTRAINS更新应变

DO10K1=1,NTENS

STRANT(K1)=STATEV(K1)+DSTRAN(K1)

10CONTINUE

CSTORESTRAINSINSTATEVARIABLEARRAY存储应变值,用于下一步的应变更新

DO20K1=1,NTENS

STATEV(K1)=STRANT(K1)

20CONTINUE

damagestrain计算各种失效情况下发生失效时的应变极限值

epsilonxt=xt/CFULL(1,1)

epsilonxc=xc/CFULL(1,1)

epsilonyt=yt/CFULL(2,2)

epsilonyc=yc/CFULL(2,2)

epsilonzt=zt/CFULL(3,3)

epsilonzc=zc/CFULL(3,3)

epsilons12=s12/CFULL(4,4)

epsilons13=s13/CFULL(5,5)

epsilons23=s23/CFULL(6,6)

fibertensedamage失效准则

if(STRANT

(1).GE.0.0)theneft=(STRANT

(1)/epsilonxt)**2+(STRANT(4)/epsilons12)**2+

(STRANT(5)/epsilons13)**2

efc=0.0

else

eft=0.0

fibercompressbuckling

efc=(STRANT

(1)/xc)**2

endif

matrixcrack

epm=STRANT

(2)+STRANT(3)

if(epm.GE.0.0)then

emt=(STRANT

(2)+STRANT(3))**2/(epsilonyt*epsilonzt)-

STRANT

(2)*STRANT(3)/epsilons23**2+

(STRANT(4)/epsilons12)**2+

(STRANT(5)/epsilons13)**2+

(STRANT(6)/epsilons23)**2

emc=0.0

emt=0.0

matrixcruck

emc=(STRANT

(2)+STRANT(3))**2/(epsilonyc*epsilonzc)+

((STRANT

(2)+STRANT(3))/epsilonyc)*

(epsilonyc/2.0/epsilons12-1.0)-

endif

!

delemination

if(STRANT(3).GE.0.0)then

edt=(STRANT(3)/epsilonzt)**2+(STRANT(6)/epsilons23)**2+

edc=0.0

edt=0.0

edc=(STRANT(3)/epsilonzc)**2+(STRANT(6)/epsilons23)**2+

Open(16,File='

D:

/1.txt'

status='

unknown'

write(16,*)ef,em,ed

ef=eft+efc

em=emt+emc

ed=edt+edc

damageornot判断是否发生失效

fiberdamage

if(ef.GT.1.0)then纤维发生损伤

ff=SQRT(ef)计算ff

if(STRANT

(1).GE.0.0)then若为纤维拉断

df=1.0-exp((-1.0)*xt*epsilonxt*CELENT*(ff-1.0)/gc1)/ff计算纤维的损伤变量df

dfdff=xt*epsilonxt*CELENT/gc1*计算

,更新雅克比矩阵用

exp((-1.0)*xt*epsilonxt*CELENT*(ff-1.0)/gc1)/ff+

exp((-1.0)*xt*epsilonxt*CELENT*(ff-1.0)/gc1)/ff**2

DOi=1,6

DFFDE(i)=0.0计算

ENDDO

DFFDE

(1)=1.0/ff*STRANT

(1)/epsilonxt**2

DFFDE(4)=1.0/ff*STRANT(4)/epsilons12**2

DFFDE(5)=1.0/ff*STRANT(5)/epsilons13**2

if(df.GT.STATEV(7))then因为损伤不可逆,保存df的最大值,用到粘性规律中

STATEV(7)=df

else

df=STATEV(7)

endif

else若为纤维压缩屈曲

df=1.0-exp((-1.0)*xc*epsilonxc*CELENT*(ff-1.0)/gc1)/ff计算纤维的损伤变量df

dfdff=xc*epsilonxc*CELENT/gc1*计算

exp((-1.0)*xc*epsilonxc*CELENT*(ff-1.0)/gc1)/ff+

exp((-1.0)*xc*epsilonxc*CELENT*(ff-1.0)/gc1)/ff**2

DOi=1,6计算

DFFDE(i)=0.0

DFFDE

(1)=1.0/ff*STRANT

(1)/epsilonxc**2

if(df.GT.STATEV(7))then因为损伤不可逆,保存df的最大值,用到粘性规律中

else纤维没有发生损伤,纤维的损伤变量等都置零

df=0.0

dfdff=0.0

matrixdamage基体损伤,思路与纤维损伤相同

if(em.GT.1.0)then

fm=SQRT(em)

if(epm.GE.0.0)then

dm=1.0-exp((-1.0)*yt*epsilonyt*CELENT*(fm-1.0)/gc2)/fm

dmdfm=yt*epsilonyt*CELENT/gc2*

exp((-1.0)*yt*epsilonyt*CELENT*(fm-1.0)/gc2)/fm+

exp((-1.0)*yt*epsilonyt*CELENT*(fm-1.0)/gc2)/fm**2

DFMDE(i)=0.0

DFMDE

(2)=1.0/2.0/fm*

(2.0*(STRANT

(2)+STRANT(3))/epsilonyt/epsilonzt-

STRANT(3)/epsilons23**2)

DFMDE(3)=1.0/2.0/fm*

(2.0*(STRANT

(2)+STRANT(3))/epsilonyt/epsilonzt-

STRANT

(2)/epsilons23**2)

DFMDE(4)=1.0/fm*STRANT(4)/epsilons12**2

DFMDE(5)=1.0/fm*STRANT(5)/epsilons13**2

DFMDE(6)=1.0/fm*STRANT(6)/epsilons23**2

if(dm.GT.STATEV(8))then

STATEV(8)=dm

dm=STATEV(8)

dm=1.0-exp(-1.0*yc*epsilonyc*CELENT*(fm-1.0)/gc2)/fm

dmdfm=yc*epsilonyc*CELENT/gc2*

exp((-1.0)*yc*epsilonyc*CELENT*(fm-1.0)/gc2)/fm+

exp((-1.0)*yc*epsilonyc*CELENT*(fm-1.0)/gc2)/fm**2

(2.0*(STRANT

(2)+STRANT(3))/epsilonyc/epsilonzc+

1.0/epsilonyc*(1.0/2.0*epsilonyc/epsilons12-1)-

STRANT(3)/epsilons23**2)

DFMDE(4)=1.0/fm*

STRANT(4)/epsilons12**2

DFMDE(5)=1.0/fm*

STRANT(5)/epsilons13**2

DFMDE(6)=1.0/fm*

STRANT(6)/epsilons23**2

endif

dm=0.0

dmdfm=0.0

delamination分层损伤,思路同上

if(ed.GT.1.0)then

fd=SQRT(ed)

dd=1-exp((-1.0)*zt*epsilonzt*CELENT*(fd-1.0)/gc3)/fd

dddfd=zt*epsilonzt*CELENT/gc3*

exp((-1.0)*zt*epsilonzt*CELENT*(fd-1.0)/gc3)/fd+

exp((-1.0)*zt*epsilonzt*CELENT*(fd-1.0)/gc3)/fd**2

DFDDE(i)=0.0

DFDDE(3)=1.0/fd

*STRANT(3)/epsilonzt**2

DFDDE(5)=1.0/fd

*STRANT(5)/epsilons13**2

DFDDE(6)=1.0/fd

*STRANT(6)/epsilons23**2

if(dd.GT.STATEV(9))then

STATEV(9)=dd

dd=STATEV(9)

dd=1.0-exp((-1.0)*zc*epsilonzc*CELENT*(fd-1.0)/gc3)/fd

dddfd=zc*epsilonzc*CELENT/gc3*

exp((-1.0)*zc*epsilonzc*CELENT*(fd-1.0)/gc3)/fd+

exp((-1.0)*zc*epsilonzc*CELENT*(fd-1.0)/gc3)/fd**2

*STRANT(3)/epsilonzc**2

dd=0.0

dddfd=0.0

if(df.GT.1.0)then

df=1.0

if(dm.GT.1.0)then

dm=1.0

if(dd.GT.1.0)then

dd=1.0

dfv=df*DTIME/(eta+DTIME)+STATEV(10)*eta/(eta+DTIME)施加粘性规律,得dfv等

dmv=dm*DTIME/(eta+DTIME)+STATEV(11)*eta/(eta+DTIME)

ddv=dd*DTIME/(eta+DTIME)+STATEV(12)*eta/(eta+DTIME)

STATEV(10)=dfv保存dfv

STATEV(11)=dmv

STATEV(12)=ddv

write(16,*)dfv

CALCULATECDFULL计算折减后的刚度阵

CDFULL(1,1)=(1.0-dfv)*(1.0-dfv)*CFULL(1,1)

CDFULL(2,2)=(1.0-dmv)*(1.0-dmv)*CFULL(2,2)

CDFULL(3,3)=(1.0-ddv)*(1.0-ddv)*CFULL(3,3)

CDFULL(1,2)=(1.0-dfv)*(1.0-dmv)*CFULL(1,2)

CDFULL(1,3)=(1.0-dfv)*(1.0-ddv)*CFULL(1,3)

CDFULL(2,3)=(1.0-dmv)*(1.0-ddv)*CFULL(2,3)

CDFULL(2,1)=CDFULL(1,2)

CDFULL(3,1)=CDFULL(1,3)

CDFULL(3,2)=CDFULL(2,3)

CDFULL(4,4)=(1.0-dfv)*(1.0-dmv)*CFULL(4,4)

CDFULL(5,5)=(1.0-dfv)*(1.0-ddv)*CFULL(5,5)

CDFULL(6,6)=(1.0-dmv)*(1.0-ddv)*CFULL(6,6)

Open(16,File='

write(16,*)CDFULL(1,1),CDFULL(2,2)

CALCULATEDCDDFV计算

,用于更新雅克比矩阵

DOj=1,6

DCDDFV(i,j)=0.0

ENDDO

DCDDFV(1,1)=(2.0*dfv-2.0)*CFULL(1,1)

DCDDFV(1,2)=(dmv-1.0)*CFULL(1,2)

DCDDFV(1,3)=(ddv-1.0)*CFULL(1,3)

DCDDFV(2,1)=DCDDFV(1,2)

DCDDFV(3,1)=DCDDFV(1,3)

DCDDFV(4,4)=(dmv-1.0)*CFULL(4,4)

DCDDFV(5,5)=(ddv-1.0)*CFULL(5,5)

CALCULATEDCDDMV计算

DCDDMV(i,j)=0.0

DCDDMV(2,2)=(2.0*dmv-2.0)*CFULL(2,2)

DCDDMV(1,2)=(dfv-1.0)*CFULL(1,2)

DCDDMV(2,3)=(ddv-1.0)*CFULL(2,3)

DCDDMV(2,1)=DCDDMV(1,2)

DCDDMV(3,2)=DCDDMV(2,3)

DCDDMV(4,4)=(dfv-1.0)*CFULL(4,4)

DCDDMV(6,6)=(ddv-1.0)*CFULL(6,6)

CALCULATEDCDDDV计算

DCDDDV(i,j)=0.0

DCDDDV(3,3)=(2.0*ddv-2.0)*CFULL(3,3)

DCDDDV(1,3)=(dfv-1.0)*CFULL(1,3)

DCDDDV(2,3)=(dmv-1.0)*CFULL(2,3)

DCDDDV(3,1)=DCDDDV(1,3)

DCDDDV(3,2)=DCDDDV(2,3)

DCDDDV(5,5)=(dfv-1.0)*CFULL(5,5)

DCDDDV(6,6)=(dmv-1.0)*CFULL(6,6)

CCALCULATESTRESSFROMSTRAINS通过折减后的刚度阵及应变更新应力

UpdatetheStrsee

stress

(1)=CDFULL(1,1)*STRANT

(1)

+CDFULL(1,2)*STRANT

(2)

+CDFULL(1,3)*STRANT(3)

stress

(2)=CDFULL(2,1)*STRANT

(1)

+CDFULL(2,2)*STRANT

(2)

+CDFULL(2,3)*STRANT(3)

stress(3)=CDFULL(1,3)*STRANT

(1)

+CDFULL(2,3)*STRANT

(2)

+CDFULL(3,3)*STRANT(3)

stress(4)=CDFULL(4,4)*STRANT(4)

stress(5)=CDFULL(5,5)*STRANT(5)

stress(6)=CDFULL(6,6)*STRANT(6)

DOi=1,6计算

TEMP1(i)=TEMP1(i)+DCDDFV(i,j)*STRANT(j)

ENDDO

ENDDO

DOi=1,6计算

TEMP2(i)=TEMP2(i)+DCDDMV(i,j)*STRANT(j)

DOi=1,6计算

TEMP3(i)=TEMP3(i)+DCDDDV(i,j)*STRANT(j)

TEMP4(i)=ddfdff*DFFDE(i)

TEMP5(i)=ddmdfm*DFMDE(i)计算

TEMP6(i)=ddddfd*DFDDE(i)

计算(

+

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1