ANSYS二次开发 精华.docx

上传人:b****5 文档编号:4096914 上传时间:2022-11-27 格式:DOCX 页数:23 大小:33.83KB
下载 相关 举报
ANSYS二次开发 精华.docx_第1页
第1页 / 共23页
ANSYS二次开发 精华.docx_第2页
第2页 / 共23页
ANSYS二次开发 精华.docx_第3页
第3页 / 共23页
ANSYS二次开发 精华.docx_第4页
第4页 / 共23页
ANSYS二次开发 精华.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

ANSYS二次开发 精华.docx

《ANSYS二次开发 精华.docx》由会员分享,可在线阅读,更多相关《ANSYS二次开发 精华.docx(23页珍藏版)》请在冰豆网上搜索。

ANSYS二次开发 精华.docx

ANSYS二次开发精华

ansys具有多种实用的二次开发工具:

ANSYS除了具有较为完善的分析功能外,同时还为用户进行二次开发提供了多种实用工具。

如宏(Marco)、参数设计语言(APDL)、用户界面设计语言(UIDL)及用户编程特性(UPFs),其中APDL(ANSYSParametricDesignLanguage)是一种非常类似于Fortran77的参数化设计解释性语言,其核心内容为宏、参数、循环命令和条件语句,可以通过建立参数化模型来自动完成一些通用性强的任务;UIDL(UserInterfaceDesignLanguage)是ANSYS为用户提供专门进行程序界面设计的语言,允许用户改变ANSYS的图形用户界面(GUI)中的一些组项,提供了一种允许用户灵活使用、按个人喜好来组织设计ANSYS图形用户界面的强有力工具;UPFs(UserProgrammableFeatures)提供了一套Fortran77函数和例程以扩展或修改程序的功能,该项技术充分显示了ANSYS的开放体系,用户不仅可以采用它将ANSYS程序剪裁成符合自己所需的任何组织形式(如可以定义一种新的材料,一个新的单元或者给出一种新的屈服准则),而且还可以编写自己的优化算法,通过将整个ANSYS作为一个子程序调用的方式实现。

程序设计的主要原则和功能如下:

(1)方便原则,即程序模块应具有良好的用户界面和易用性。

程序前台设计采用Windows提供的标准图形用户界面(GUI),用户无须接受专门训练即可使用。

同时,程序应具有良好的容错和纠错能力,避免用户操作不当造成损失。

(2)程序系统能够提供用户以下功能:

①允许用户可以根据实际计算工况,输入特定的计算参数,包括地震波选择、计算时间步长、地震波调幅与否等。

②用户在输入各种参数以后、进行计算之前可以对输入的数据进行修改、添加和删除操作,以保证输入正确的参数。

③用户通过界面调用后台的ANSYS命令流进行计算,能够得到最后的计算结果文件,供用户进行后处理和结果分析。

④用户可以添加新的功能或新的二次开发以实现程序升级。

(3)程序应具有良好的可移植性,不依赖于特定的硬件设备,只要能安装ANSYS和VC++6.0的硬件环境都能使用本系统,保证程序使用的广泛性。

(4)程序代码应具有开放性和可重用性。

这样,在进一步的设计中,能保证设计者可以方便地对代码进行修改扩充;同时,提供一定的设计接口,新的设计者可以根据接口,无须对程序进行大幅度的修改,就可以进行新的开发,以适应新的特殊要求。

 

ANSYS二次开发培训练习题(转帖)

UIDL

E.使用UIDL在ANSYS主菜单中增加一个菜单项,点击后可以出现一个子菜单或激活一个对话框。

APDL

E.使用APDL编制一个可以读写有限元模型的小程序,要求读出所有节点号和单元号,节点坐标以及单元节点列表。

E.使用DNSOL,DESOL定义计算结果

UPF

E.使用ANSYS列表命令列出ANSYS某一结果文件的内容;编译并连接ANSYS二进制文件读写程序BINTST.F,读写二进制文件并与列表方式相比较。

E.编译并连接ANSYS提供的示例程序USER01.F;在ANSYS命令行中使用/UCMD给用户命令赋新的名称,并运行。

E.编译并连接ANSYS提供的示例程序USER03.F,使用动态数组保存有限元模型信息,如节点号、单元号、节点坐标、单元节点列表。

使用UPF读写数据库子程序,读写模型中的有限元模型信息和载荷信息,并打印。

E.使用ANSYS提供子程序试验矢量与矩阵的操作

E.试验用户自定义材料

E.试验用户单元

E.使用/DEBUG命令调试ANSYS单元矩阵及载荷矢量

练习题答案:

说明:

1.  以下练习答案以ANSYS5.5.1UP199810001Windows95/98/NT的UniversityLow版本(产品号为ansysul)为例,其它版本与此类似。

2.  假定机器中已经安装了DigitalVisualFortran5.0C以上的版本假设ANSYS安装目录为C:

\ANSYS55

3.  假设用户工作目录为D:

\user

4.  约定

DOS提示  D:

\user>

DOS输入  copyc:

\ansys55\docu\UIFUNC2.GRN

ANSYS输入框  ET,1,42

数据文件  :

NMen_Training

UIDLE.使用UIDL在ANSYS主菜单中增加一个菜单项,点击后可以出现一个子菜单或激活一个对话框。

A.

1.  拷贝文件

D:

\user>copyc:

\ansys55\docu\menulist55.ans

D:

\user>copyc:

\ansys55\docu\UIMENU.GRN

D:

\user>copyc:

\ansys55\docu\UIFUNC1.GRN

D:

\user>copyc:

\ansys55\docu\UIFUNC2.GRN

2.  在主菜单中加入自定义菜单项

D:

\user>editUIMENU.GRN

在第4780应为

:

AMainMenu

在第4803行插入以下几行:

Men_Training

Sep_

所得到的结果如下:

Men_Aux12

Men_RunStat

K_LN(BETA)

Sep_

K_LN(BETA)

Fnc_UNDO

Sep_

Men_Training

Sep_

Fnc_FINISH

将光标移至第4812行,插入以下一段

:

!

:

NMen_Training

:

S413,76,330

:

TMenu

:

ATrainingMenu

:

DANSYSTrainingMENU

Fnc_Training

:

EEND

:

!

删除该行

:

XINDEXADDEDBYANSYS

以后的全部行

存盘退出

3.  编辑新的菜单文件

D:

\user>editnewmenu.grn

键入以下文字

:

FUIMENU.GRN

:

DModifiedon98/10/01,Revision(SID)=5.181.1.68-ForusewithANSYS5.5

:

I1,759,809

:

!

:

NFnc_Training

:

S627,449,170

:

TCommand

:

AANSYSCustomizingTraining

:

DTrainingExercises

:

C)*GET,_z1,ACTIVE,,TITLE,,START,1

:

C)*GET,_z2,ACTIVE,,TITLE,,START,9

:

C)*GET,_z3,ACTIVE,,TITLE,,START,17

:

C)*GET,_z4,ACTIVE,,TITLE,,START,25

:

C)*GET,_z5,ACTIVE,,TITLE,,START,33

:

C)*GET,_z6,ACTIVE,,TITLE,,START,41

:

C)*GET,_z7,ACTIVE,,TITLE,,START,49

:

C)*GET,_z8,ACTIVE,,TITLE,,START,57

:

C)*GET,_z9,ACTIVE,,TITLE,,START,65

Fmt_H

Inp_NoApply

Cmd_)/NOPR

Cmd_)/TITLE

Fld_2

   Prm_[/TITLE]WelcometoANSYSTraining

   Typ_Char,72,72

   Prm_[/TITLE]WelcometoANSYSTraining

Cmd_)/Go

:

EEND

:

!

存盘退出

4.  修改menulist55.ans文件

D:

\user>editmenulist55.ans

修改文件的前三行,使其指向用户工作目录下的文件

d:

\user\UIMENU.GRN

d:

\user\UIFUNC1.GRN

d:

\user\UIFUNC2.GRN

d:

\user\newmenu.grn

c:

\ansys55\DOCU\UICMDS.HLP

c:

\ansys55\DOCU\UIELEM.HLP

c:

\ansys55\DOCU\UIGUID.HLP

c:

\ansys55\DOCU\UITHRY.HLP

c:

\ansys55\DOCU\UIOTHR.HLP

5.  启动ANSYS的launcher

在WorkingDirectory框中键入

d:

\user

按OK键,启动ANSYS界面

APDLE.使用APDL编制一个可以读写有限元模型的小程序,要求读出所有节点号和单元号,节点坐标以及单元节点列表。

A.

1.  编辑文件a.dat

D:

\user>edita.dat

*Get,nnod,NODE,0,COUNT

*Dim,xy,array,nnod,2

*Dim,nodes,array,nnod

*Get,nd,NODE,0,NUM,MIN

*Do,I,1,nnod,1

   nodes(I)=nd

   xy(I,1)=Nx(nd)

   xy(I,2)=Ny(nd)

   nd=Ndnext(nd)

*Enddo

*Get,nelm,ELEM,0,COUNT

*Dim,elems,array,nelm

*Dim,ndlst,array,nelm,4

*Get,el,ELEM,0,NUM,MIN

*Do,I,1,nelm,1

   elems(I)=el

   *Do,J,1,4

      ndlst(I,J)=Nelem(el,J)

   *Enddo

   el=Elnext(nd)

*Enddo

2.  启动ANSYS,根据自己所熟悉的领域,建立一个有限元模型

3.  输入文件a.dat

/input,a,dat

4.  检查

分别列出节点数,节点号列表,坐标,单元数,单元号列表,单元节点列表,与nlist,elist等对比。

*status,nnod

*status,nodes

*status,xy

*status,nelm

*status,elems

*status,ndlst

E.使用DNSOL,DESOL定义计算结果

1.利用前面所建立或新建一个有限元模型

2.进入Post-processor

/post26

MainMenu->GeneralPostproc

3.定义节点上的结果手工定义->NodalResults按对话框提示输入各点的结果数据程序自动定义

/PREP7BLC4,0,0,4,2et,1,42esize,.5amesh,1

/POST1dof,temp*Get,nnod,NODE,0,COUNT

*Dim,xy,array,nnod,2*Dim,nodes,array,nnod*Get,nd,NODE,0,NUM,MIN

*Do,I,1,nnod,1nodes(I)=ndxy(I,1)=Nx(nd)xy(I,2)=Ny(nd)nd=Ndnext(nd)*Enddo

*Do,i,1,nnod,1

   dist=sqrt((xy(i,1)-2)*(xy(i,1)-2)+(xy(i,2)-1)*(xy(i,2)-1))tmp=dist*100Dnsol,nodes(i),temp,,tmp*Enddo

nsel,allplnsol,temp

UPF

E.使用ANSYS列表命令列出ANSYS某一结果文件的内容;编译并连接ANSYS二进制文件读写程序BINTST.F,读写二进制文件并与列表方式相比较。

1.  建立一个自己所熟悉的有限元模型,单元数3~5即可,加载、设置边界条件并求解

6.  使用ANSYS列表命令

UtilityMenu->File->List->BinaryFile

7.  在弹出的对话框中

[DUMP]Recordstobelist中选ALLRecords

[FORM]Amtofoutputperrecord中选EntireRecords

[FILEAUX2]binaryfiletolist中选择要显示的.rst文件

按OK键确认后,可以得到.rst文件的列表窗口

使用列表窗口的菜单保存列表窗口中的输出结果到文件list.txt

File->SaveAs

8.  拷贝以下文件到工作目录

D:

\user>copyc:

\ansys55\custom\misc\intel\bintst.fD:

\user>copyc:

\ansys55\custom\misc\intel\bintrd.fD:

\user>copyc:

\ansys55\custom\misc\intel\bintwr.fD:

\user>copyc:

\ansys55\custom\misc\intel\Custom.batD:

\user>copyc:

\ansys55\custom\misc\intel\MakefileD:

\user>copyc:

\ansys55\custom\misc\intel\binlib.a

9.  运行Custom.bat,编译并连接

D:

\user>custom

在工作目录中可生成一个运行程序bintst.exe

10.  运行bintst.exe

D:

\user>bintst>out.txt

将bintst的运行结果转存到文件out.txt中

比较out.txt与list.txt文件中的结果,并参考手册GuidetointerfacingtoANSYS中FormatofBinaryDataFiles的FormatoftheResultsFile分析文件结构。

E.用户命令:

编译并连接ANSYS提供的示例程序USER01.F;在ANSYS命令行中使用/UCMD给用户命令赋新的名称,并运行。

1.  清理用户工作目录下的文件

如果在用户工作目录下存在ANSYS二进制文件读取等程序,请全部删除

2.  拷贝以下文件到用户工作目录

D:

\user>copyc:

\ansys55\custom\user\intel\user01.F

D:

\user>copyc:

\ansys55\custom\user\intel\Anscust.bat

D:

\user>copyc:

\ansys55\custom\user\intel\Makefile

1.  修改user01.F

修改以下几行

c

c*****user'SCODEISINSERTEDHERE*****

      write(iott,2000)

2000format(//'*****CALLTOANSYS,INCDUMMYUSER01*****'//)

c

c*****donotreturnthisresultcodeinarealuserroutine

      user01=-654321

c*****insteadreturnazero*****

cuser01=0

c

c

c*****user'SCODEISINSERTEDHERE*****write(iott,2000)2000format(//'wby***CALLTOANSYS,INCDUMMYUSER01*****'//)cc*****donotreturnthisresultcodeinarealuser

cuser01=-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"_free"imported

LINK:

warningLNK4049:

locallydefinedsymbol"_malloc"imported

LINK:

warningLNK4049:

locallydefinedsymbol"_fflush"imported

LINK:

warningLNK4049:

locallydefinedsymbol"_fread"imported

LINK:

warningLNK4049:

locallydefinedsymbol"_fwrite"imported

LINK:

warningLNK4049:

locallydefinedsymbol"_ftell"imported

LINK:

warningLNK4049:

locallydefinedsymbol"_fseek"imported

当出现gotoend时表明编译、连接完成,这时应该在用户工作目录下出现一个可执行程序ansys.exe,约为34MB

4.  运行编译连接生成的ANSYS

在用户工作目录下

D:

\user>ansys-pansysul

D:

\user>ansys55cust-custom.\ansys.exe-pansysul

如果在其它目录下运行

D:

\otherdir>setpath=c:

\ansys55\bin\intel

D:

\otherdir>ansys55cust-customd:

\user\ansys.exe-pansysul

D:

\otherdir>setpath=d:

\user

D:

\otherdir>ansys-pansysul

5.  执行用户命令

执行用户命令可以在字符界面下,也可在图形界面下

在出现

BEGIN:

提示信息后,键入以下命令

usr1

或者输入以下命令进行到图形用户界面

/show,win32

/menu,on

在工作站上的用户可以选择

/show,x11

/show,x11c

/show,3D详细说明可以参见ANSYS命令手册中关于/show的说明

在输入框中,键入命令

usr1

6.  用/UCMD命令自定义用户命令名

在ANSYSBEGIN提示信息后

/UCMD,aaa,1

aaa

E.编译并连接ANSYS提供的示例程序USER03.F,使用动态数组保存有限元模型信息,如节点号、单元号、节点坐标、单元节点列表。

使用UPF读写数据库子程序,读写模型中的有限元模型信息和载荷信息,并打印。

以下是一个完整的程序,可由user03.F修改得到

*deck,user03userANSYS,INC

csid5.1copyoffiles.user03.Flastchangedbyjtmon98/03/09

      functionuser03(intin,dpin,ch4in,ch8in)

#include"impcom.inc"

      externalwrinqr,ndinqr,ndgxyz,ndnext,HeapAllocPtr,

     xHeapDealloc,erhandler

      integerwrinqr,ndinqr,ndgxyz,ndnext,HeapAllocPtr

      integeruser03,intin(12),iott,i,ksel,xcptr,hXcptr,ycptr,

     xhYcptr,zcptr,hZcptr,ndptr,hNdptr,numnp,node

      doubleprecisiondpin(12),xyz(3),xmean,ymean,zmean,stdxyz(3),

     xsodx,sody,sodz

      character*4ch4in(12)

      character*8ch8in(12)

#include"ansysdef.inc"

#include"stack.inc"

c

cGetnodalxyzlocationsandcalculatestandarddeviationof

cxcoordinates,ycoordinates,&zcoordinates

c

cgetnumberofcurrentlyselectednodes

      numnp=ndinqr(0,DB_NUMSELECTED)

      if(numnp.le.0)goto999

callocatememoryforx,y,&zcoordinatesofnodes

      xcptr=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)

cloopthroughallselectednodes

      i=1

      node=0

      xmean=0.0d0

      ymean=0.0d0

      zmean=0.0d0

10node=ndnext(node)

      if(node.gt

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1