ansys瞬态分析出现严重错误,望各位前辈答疑解惑,小弟不胜感激。
Finish
/clear
/nerr,0,0
/PREP7
*DO,i,1,8
*DO,j,1,48
RECTNG,j*2.5-2.5,j*2.5,i*2.5-2.5,i*2.5
*ENDDO
*ENDDO
AGLUE,ALL
NUMCMP,ALL
RECTNG,0,2.5,0,-2.5,
RECTNG,117.5,120,0,-2.5,
RECTNG,57.5,60,20,22.5,
RECTNG,60,62.5,20,22.5,
AGLUE,ALL
NUMCMP,ALL
ET,1,PLANE42,0,0,2
MPTEMP,,,,,,,,
MPTEMP,1,0
*DO,k,1,384
*GET,t,ACTIVE,0,TIME,WALL
*SET,random_ex,GDIS(1500+t,150+t)-t
MPDATA,EX,k,,random_ex
MPDATA,PRXY,k,,0.3
!MPDATA,DENS,1,,30
*ENDDO
TYPE,1
REAL,
ESYS,0
SECNUM,
AESIZE,ALL,2.5,
*DO,L,1,384
MAT,L
AMESH,L
*ENDDO
MPTEMP,,,,,,,,
MPTEMP,1,0
MPDATA,EX,385,,10000
MPDATA,PRXY,385,,0.3
AESIZE,ALL,2.5,
MAT,385
AMESH,385
AMESH,386
AMESH,387
AMESH,388
d,443,uy,0
d,444,uy,0
FINISH
*get,enummax,elem,,num,max,
*dim,d,array,enummax,
*dim,datad,array,enummax,
*dim,sigma,array,enummax
!以上为前处理部分,问题不大.主要问题出现在下面。
*do,i,1,10,!进行半正弦加载,共加载十次。
/SOLU
ANTYPE,4
TRNOPT,FULL
dt=0.1
pi=acos(-1)
*do,j,1,10, !半正弦加载采用10个荷载步进行近似
f,446,fy,-4*(1-cos(2*pi*dt*j))
time,dt*j
nsubst,1,
AUTOTS,0
kbc,0
Outres,erase
outres,all,all
nlgeom,1
nropt,full,,
solve
*enddo
finish
/POST1
SET,5,LAST,1,!提取第五荷载步计算结果数据
ETABLE,stressx,S,x
finish
*vget,sigma,elem,,etab,stressx,
*do,j,1,enummax-4,!此处do循环为根据疲劳损伤演化公式编写公式
*if,sigma(j),LE,0,THEN
datad(j)=0
d(j)=d(j)+datad(j)
*else
Nf=0.5*(sigma(j)/(2*1.5))**(-5.5)
Jiazaicishu=i
*if,jiazaicishu,gt,1,then
datad(j)=1-d(j)-((1-d(j))**2-1/Nf)**0.5
d(j)=d(j)+datad(j)
*else
d(j)=0
datad(j)=1-d(j)-((1-d(j))**2-1/Nf)**0.5
d(j)=d(j)+datad(j)
*endif
*endif
*enddo
*do,ii,1,enummax-4, !此处do循环为得到各单元损伤,然后对单元属性参数进行修正
*if,d(ii),GT,0.8,THEN
D(ii)=1
*GET,mat_num,ELEM,ii,ATTR,MAT
*GET,ex_value,EX,mat_num
/PREP7
Ekill,ii
finish
*else
*GET,mat_num,ELEM,ii,ATTR,MAT
*GET,ex_value,EX,mat_num
/PREP7
MP,EX,ii,ex_value*(1-d(ii))
finish
*endif
*enddo
yushu=mod(jiazaicishu,10) !以下为保存自己需要的数据
*if,yushu,EQ,0,THEN
k=jiazaicishu/10
*if,k,eq,1,then
*dim,danyuansunshang1,array,enummax
*do,j,1,enummax-4,
danyuansunshang1(j)=d(j)
*enddo
*do,j,enummax-3,enummax
Danyuansunshang1(j)=0
*enddo
*endif
*if,k,eq,5,then
*dim,danyuansunshang5,array,enummax
*do,j,1,enummax-4,
Danyuansunshang5(j)=d(j)
*enddo
*do,j,enummax-3,enummax
Danyuansunshang5(j)=0
*enddo
*endif
*endif
*enddo