fortran调用ansys做桁架结构优化例子.docx_第1页
fortran调用ansys做桁架结构优化例子.docx_第2页
fortran调用ansys做桁架结构优化例子.docx_第3页
fortran调用ansys做桁架结构优化例子.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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,/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 !结点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=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 !轴测视图!EPLOT !画单元FINISH*cfopen,E:projecttrussdata_2,txt*vwrite,SIG1,SIG2,WT(F7.2,/F7.2,/F7.2) *cfclosFORTRAN程序部分:PROGRAM TRUSSUSE DFLIBIMPLICIT NONEcharacter(len=20) : filename1=trussdata_2.txtcharacter(len=20) : filename2=trussdata_1.txtREAL,parameter : e=0.01!e为计算精度REAL,parameter : xu=400 !xu为许用应力INTEGER : fileid,kINTEGER iLOGICAL(4) resultREAL u1(50),u2(50),ww(50),umax !u1,u2为应力比,umax为最大应力REAL sig1,sig2,W,ap!sig1为杆1的最大应力,sig2为杆2的最大应力REAL x1(50),x2(50),xx1,xx2!x为杆截面面积i=1k=1x1(1)=707!定义杆的初始值x2(1)=707ap=10DO WHILE( ap=e )!调用ANSYS做结构分析result=SYSTEMQQ( C:Program FilesAnsys Incv110ANSYSbinintelANSYS110 -b -p & ane3fl -i E: projecttruss.txt -o E:projecttrussanswer.txt)fileid=10open(fileid,file=filename1)!从ansys写出的文件中读入数据(应力和求得的重量)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)end if!射线步x1(i+1)=umax*x1(i)x2(i+1)=umax*x2(i)u1(i+1)=u1(i)/umax!求出新的应力比u2(i+1)=u2(i)/umax!调整步x1(i+2)=u1(i+1)*x1(i+1) x2(i+2)=u2(i+1)*x2(i+1)xx1=x1(i+2)/(500.0*1.414)xx2=x2(i+2)/(500.0*1.414)fileid=20open(fileid,file=filename2)!write(fileid,(A3,F7.2,/A3,F7.2,/A3,F7.2) A1=,x1(i+2),A2=,x2(i+2),A3=,x1(i+2)close(fileid)if ( i=3) then if ( ww(k)-ww(k-1)0 ) then write(*,(A3,F7.2,/A3,F7.2,/A3,F7.2) A1=,x1(i),A2=,x2(i),A3=,x1(i) write(*,*) ww(k),ww(k-1) paus

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论