问:二次开发的例题_chm???UPFE.使用ANSYS列表命令列出ANSYS某一结果文件的内容;编译并连接ANSYS二进制文件读写程序BINTST.F,读写二进制文件并与列表方式相比较。1.建立一个自己所熟悉的有限元模型,单元数3~5即可,加载、设置边界条件并求解6.使用ANSYS列表命令UtilityMenu-File-List-BinaryFile7.在弹出的对话框中[DUMP]Recordstobelist中选ALLRecords[FORM]Amtofoutputperrecord中选EntireRecords[FILEAUX2]binaryfiletolist中选择要显示的.rst文件按OK键确认后,可以得到.rst文件的列表窗口使用列表窗口的菜单保存列表窗口中的输出结果到文件list.txtFile-SaveAs8.拷贝以下文件到工作目录D:\usercopyc:\ansys55\custom\misc\intel\bintst.fD:\usercopyc:\ansys55\custom\misc\intel\bintrd.fD:\usercopyc:\ansys55\custom\misc\intel\bintwr.fD:\usercopyc:\ansys55\custom\misc\intel\Custom.batD:\usercopyc:\ansys55\custom\misc\intel\MakefileD:\usercopyc:\ansys55\custom\misc\intel\binlib.a9.运行Custom.bat,编译并连接D:\usercustom在工作目录中可生成一个运行程序bintst.exe10.运行bintst.exeD:\userbintstout.txt将bintst的运行结果转存到文件out.txt中比较out.txt与list.txt文件中的结果,并参考手册GuidetointerfacingtoANSYS中FormatofBinaryDataFiles的FormatoftheResultsFile分析文件结构。E.用户命令:编译并连接ANSYS提供的示例程序USER01.F;在ANSYS命令行中使用/UCMD给用户命令赋新的名称,并运行。1.清理用户工作目录下的文件如果在用户工作目录下存在ANSYS二进制文件读取等程序,请全部删除2.拷贝以下文件到用户工作目录D:\usercopyc:\ansys55\custom\user\intel\user01.FD:\usercopyc:\ansys55\custom\user\intel\Anscust.batD:\usercopyc:\ansys55\custom\user\intel\Makefile1.修改user01.F修改以下几行cc*****user'SCODEISINSERTEDHERE*****write(iott,2000)2000format(//'*****CALLTOANSYS,INCDUMMYUSER01*****'//)cc*****donotreturnthisresultcodeinarealuserroutineuser01=-654321c*****insteadreturnazero*****cuser01=0c为cc*****user'SCODEISINSERTEDHERE*****write(iott,2000)2000format(//'wby***CALLTOANSYS,INCDUMMYUSER01*****'//)cc*****donotreturnthisresultcodeinarealusercuser01=-654321c*****insteadreturnazero*****user01=0c在format语句中增加的字符是为了在ANSYS运行时表明user01.F确实是自己修改过的版本将user01的值设成0,是为了使ANSYS给出正确信息,而不是警告2.修改Makefile修改ansys55_dir的值使其指向ANSYS主目录ansys55_dir=C:\ansys55修改下面这一行siappst.lib\为$(ansys55_dir)\custom\lib\intel\siappst.lib\3.运行ANSCUST.BAT编译并连接忽略掉如下WARNING提示信息LINK:warningLNK4049:locallydefinedsymbol_freeimportedLINK:warningLNK4049:locallydefinedsymbol_mallocimportedLINK:warningLNK4049:locallydefinedsymbol_fflushimportedLINK:warningLNK4049:locallydefinedsymbol_freadimportedLINK:warningLNK4049:locallydefinedsymbol_fwriteimportedLINK:warningLNK4049:locallydefinedsymbol_ftellimportedLINK:warningLNK4049:locallydefinedsymbol_fseekimported当出现gotoend时表明编译、连接完成,这时应该在用户工作目录下出现一个可执行程序ansys.exe,约为34MB4.运行编译连接生成的ANSYS在用户工作目录下D:\useransys-pansysul或D:\useransys55cust-custom.\ansys.exe-pansysul如果在其它目录下运行D:\otherdirsetpath=c:\ansys55\bin\intelD:\otherdiransys55cust-customd:\user\ansys.exe-pansysul或D:\otherdirsetpath=d:\userD:\otherdiransys-pansysul5.执行用户命令执行用户命令可以在字符界面下,也可在图形界面下在出现BEGIN:提示信息后,键入以下命令usr1或者输入以下命令进行到图形用户界面/show,win32/menu,on在工作站上的用户可以选择/show,x11/show,x11c/show,3D详细说明可以参见ANSYS命令手册中关于/show的说明在输入框中,键入命令usr16.用/UCMD命令自定义用户命令名在ANSYSBEGIN提示信息后/UCMD,aaa,1aaaE.编译并连接ANSYS提供的示例程序USER03.F,使用动态数组保存有限元模型信息,如节点号、单元号、节点坐标、单元节点列表。使用UPF读写数据库子程序,读写模型中的有限元模型信息和载荷信息,并打印。以下是一个完整的程序,可由user03.F修改得到*deck,user03userANSYS,INCcsid5.1copyoffiles.user03.Flastchangedbyjtmon98/03/09functionuser03(intin,dpin,ch4in,ch8in)#includeimpcom.incexternalwrinqr,ndinqr,ndgxyz,ndnext,HeapAllocPtr,xHeapDealloc,erhandlerintegerwrinqr,ndinqr,ndgxyz,ndnext,HeapAllocPtrintegeruser03,intin(12),iott,i,ksel,xcptr,hXcptr,ycptr,xhYcptr,zcptr,hZcptr,ndptr,hNdptr,numnp,nodedoubleprecisiondpin(12),xyz(3),xmean,ymean,zmean,stdxyz(3),xsodx,sody,sodzcharacter*4ch4in(12)character*8ch8in(12)#includeansysdef.inc#includestack.incccGetnodalxyzlocationsandcalculatestandarddeviationofcxcoordinates,ycoordinates,&zcoordinatesccgetnumberofcurrentlyselectednodesnumnp=ndinqr(0,DB_NUMSELECTED)if(numnp.le.0)goto999callocatememoryforx,y,&zcoordinatesofnodesxcptr=HeapAllocPtr(numnp,'XCoords',HEAP_DOUBLE,hXcptr)ycptr=HeapAllocPtr(numnp,'YCoords',HEAP_DOUBLE,hYcptr)zcptr=HeapAllocPtr(numnp,'ZCoords',HEAP_DOUBLE,hZcptr)ndptr=HEapAllocPtr(numnp,'Nodes',HEAP_INTEGER,hNdptr)cloopthroughallselectednodesi=1node=0xmean=0.0d0ymean=0.0d0zmean=0.0d010node=ndnext(node)if(node.gt.0)thencgetxyzcoordinatesksel=ndgxyz(node,xyz(1))cstorethisnode'sxyzcoordinatesdstack(xcptr+i)=xyz(1)dstack(ycptr+i)=xyz(2)dstack(zcptr+i)=xyz(3)istack(ndptr+i)=nodecwhilewe'relooping,accumulatesumstocalculatemeansxmean=xmean+xyz(1)ymean=ymean+xyz(2)zmean=zmean+xyz(3)cincrementindexi=i+1cloopbackupfornextselectednodegoto10endifcallwrdisp(numnp,istack(ndptr+1))cnode=0,attheendofnodelistccalculatemeanofxyzcoordinatesxmean=xmean/numnpymean=ymean/numnpzmean=zmean/numnpccalculatestandarddeviationforxyzcoordinatessodx=0sody=0sodz=0doi=1,numnpsodx=sodx+(dstack(xcptr+i)-xmean)**2sody=sody+(dstack(ycptr+i)-ymean)**2sodz=sodz+(dstack(zcptr+i)-zmean)**2enddostdxyz(1)=sqrt(sodx/(numnp-1))stdxyz(2)=sqrt(sody/(numnp-1))stdxyz(3)=sqrt(sodz/(numnp-1))c*****writetooutputfile*****iott=wrinqr(WR_OUTPUT)write(iott,2000)stdxyz(1),stdxyz(2),stdxyz(3)2000format(/'STDFORXCOORDINATES:',G12.5,/,X'STDFORYCOORDINATES:',G12.5,/,X'STDFORZCOORDINATES:',G12.5)c*****writetoGUIwindow*****callerhandler('user03',5000,2,x'STDFORXCOORDINATES:%G%/STDFORYxCOORDINATES:%G%/STDFORZCOORDINA