资源描述:
《fortran调用ansys做桁架结构优化例子》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、fortran调用ansys做桁架结构优化例子ANSYS命令流部分:/clearB=1000 !基本尺寸!进入PREP7并建模/PREP7*dim,A,,3,1 !定义一个3*1的数组*VREAD,A,E:projecttrussdata_1,txt,,IJK,3,1 !IJK表示读入的顺序(F7.2)A1=A(1,1)A2=A(2,1)A3=A(3,1)*cfopen,E:projecttrussdata_3,txt*vwrite,A1,A2,A3(F7.2,/
2、F7.2,/F7.2)*cfclosET,1,LINK1 !二维杆单元R,1,A1 !以参数形式的实参R,2,A2R,3,A3MP,EX,1,2.1E6 !杨氏模量N,1,-B,0,0 !定义结点N,2,0,0,0N,3,B,0,0N,4,0,-B,0E,1,4 !定义单元REAL,2E,2,4REAL,3E,3,4FINISH!!进入求解器,定义载荷和求解/SOLUD,1,ALL,0,,3
3、 !结点UX=UY=0F,4,FX,200000 !结点4上的X方向载荷分量(工况1)F,4,FY,-200000 !结点4上的Y方向载荷分量(工况2)SOLVEFINISH!进入POST1并读出状态变量数值/POST1SET,LASTETABLE,EVOL,VOLU !将每个单元的体积放入ETABLESSUM !将单元表格内数据求和*GET,VTOT,SSUM,,ITEM,EVOL !VTOT=总体积RHO
4、=2.85E-4WT=RHO*VTOT !计算总体积ETABLE,SIG,LS,1 !将轴向应力放入ETABLE*GET,SIG1,ELEM,1,ETAB,SIG !SIG1=第一个单元的轴向应力*GET,SIG2,ELEM,2,ETAB,SIG !SIG2=第二个单元的轴向应力SIG1=ABS(SIG1) !计算轴向应力的绝对值SIG2=ABS(SIG2)!/ESHAPE,2 !以实体单元模式显示壳单元!/VIEW,1,1,1,1
5、 !轴测视图!EPLOT !画单元FINISH*cfopen,E:projecttrussdata_2,txt*vwrite,SIG1,SIG2,WT(F7.2,/F7.2,/F7.2)*cfclosFORTRAN程序部分:PROGRAMTRUSSUSEDFLIBIMPLICITNONEcharacter(len=20)::filename1="trussdata_2.txt"character(len=20)::filename2="trussdata_1
6、.txt"REAL,parameter::e=0.01 !e为计算精度REAL,parameter::xu=400 !xu为许用应力INTEGER::fileid,kINTEGERiLOGICAL(4)resultREALu1(50),u2(50),ww(50),umax !u1,u2为应力比,umax为最大应力REALsig1,sig2,W,ap !sig1为杆1的最大应力,sig2为杆2的最大应力REALx1(50),x2(50),xx1,xx2 !x为杆截面面积i=1k=1x1(1
7、)=707 !定义杆的初始值x2(1)=707ap=10DO WHILE(ap>=e)!调用ANSYS做结构分析result=SYSTEMQQ('C:ProgramFilesAnsysIncv110ANSYSbinintelANSYS110-b-p&&ane3fl-iE:projecttruss.txt-oE:projecttrussanswer.txt')fileid=10open(fileid,file=filename1) !从ansys写出的文件中读入数
8、据(应力和求得的重量)read(fileid,*)sig1,sig2,Wclose(fileid)ww(k)=wu1(i)=sig1/xuu2(i)=sig2/xuif(u1(i)>=u2(i))then !判断最大应力 umax=u1(i)else umax=u2(i)endif!射线步x1(i+1)=umax*x1(i)x2(i+1)=umax*x2(i)u1(i+1)=u1(i)/umax !求出新的应力比u2(i+1)=u2(i)/umax!调整步x