我利用ANSYS的ADPL语言和ESO法进行了一个连续体的拓补优化算例计算,这个算例可以在各个关于拓扑优化的文献中找到,可以说是很经典。由于采用的是ESO法,所以我将结果和相关文献进行了对照(请参阅《结构动力修改及优化设计》,荣见华,郑健龙等编,人民交通出版社 P252).
APDL程序如下:
/filename,optimization !利用ESO法进行平面连续体的拓扑优化 /prep7
RECTNG,0,10,0,24 ET,1,PLANE42,,,3 R,,0.001 MP,EX,1,100E9 MP,PRXY,1,0.3 AESIZE,1,1, MSHAPE,0,2D AMESH,ALL DL,4,,ALL,0 F,24,FY,-1E6 /SOLU NLGEOM,ON NROPT,FULL,,ON SOLCONTROL,off SOLVE FINISH !以上是有限元建模和分析过程
/POST1!以下是删除迭代过程 SET,first
*SET,ER,0.005 !定义删除率 *SET,PL,0 !最大应力 *set,ql,0 !判断单元死活的变量 *set,tt,0 !总体积 *set,total,0 !应力之和 sel=0 j1=0 ETABLE,PK,S,EQV *GET,LU,ETAB,0,NLENG,MAX *DIM,RESULT,ARRAY,LU,1 *DIM,volum,ARRAY,80,1!总体积 *DIM,ma,ARRAY,80,1!最大应力 *DIM,mid1,ARRAY,80,1 *DIM,min1,ARRAY,80,1 *VGET,RESULT(1,1),ELEM,1,ETAB,PK *vabs,1 *vfun,result(1,1),copy,result(1,1) *VSCFUN,PL,MAX,RESULT
*DO,RR,0.005,0.40,ER *IF,(KL/PL),le,RR,then rr=rr-er *endif
/SOLU *DO,I,1,LU,1 *get,ql,elem,i,attr,live *if,ql,eq,1,then
*IF,abs(RESULT(I,1)/PL),Le,RR,THEN EKILL,I *ENDIF *endif *ENDDO
SOLVE ESEL,S,LIVE EPLOT /POST1
ETABLE,PK,S,EQV ETABLE,volum,volu ssum *get,total,ssum,0,item,PK *get,tt,ssum,0,item,volum *get,sel,elem,0,count *VGET,RESULT(1,1),ELEM,1,ETAB,PK *vabs,1 *vfun,result(1,1),copy,result(1,1) *VSCFUN,PL,MAX,RESULT *VSCFUN,KL,MIN,RESULt j1=(rr*200)+1 volum(j1,1)=tt ma(j1,1)=pl mid1(j1,1)=total/sel min1(j1,1)=kl *ENDDO *cfopen,max,DAT *vwrite,ma(1.1) (4F20.4) *cfopen,min,DAT *vwrite,min1(1.1) (4F20.4) *cfopen,mid,DAT *vwrite,mid1(1.1) (4F20.4) *cfopen,volum,DAT *vwrite,volum(1.1) (4F20.4)
|