ANSYS二次开发培训练习题.docx

上传人:b****6 文档编号:8554623 上传时间:2023-01-31 格式:DOCX 页数:19 大小:26.41KB
下载 相关 举报
ANSYS二次开发培训练习题.docx_第1页
第1页 / 共19页
ANSYS二次开发培训练习题.docx_第2页
第2页 / 共19页
ANSYS二次开发培训练习题.docx_第3页
第3页 / 共19页
ANSYS二次开发培训练习题.docx_第4页
第4页 / 共19页
ANSYS二次开发培训练习题.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

ANSYS二次开发培训练习题.docx

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

ANSYS二次开发培训练习题.docx

ANSYS二次开发培训练习题

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给用户命令赋新的名称,并运行。

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

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

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

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

11.修改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给出正确信息,而不是警告

12.修改Makefile

修改ansys55_dir的值使其指向ANSYS主目录

ansys55_dir=C:

\ansys55

修改下面这一行

siappst.lib\

$(ansys55_dir)\custom\lib\intel\siappst.lib\

13.运行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

14.运行编译连接生成的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

15.执行用户命令

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

在出现

BEGIN:

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

usr1

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

/show,win32

/menu,on

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

/show,x11

/show,x11c

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

在输入框中,键入命令

usr1

16.用/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.0)then

cgetxyzcoordinates

ksel=ndgxyz(node,xyz

(1))

cstorethisnode'sxyzcoordinates

dstack(xcptr+i)=xyz

(1)

dstack(ycptr+i)=xyz

(2)

dstack(zcptr+i)=xyz(3)

istack(ndptr+i)=node

cwhilewe'relooping,accumulatesumstocalculatemeans

xmean=xmean+xyz

(1)

ymean=ymean+xyz

(2)

zmean=zmean+xyz(3)

cincrementindex

i=i+1

cloopbackupfornextselectednode

goto10

endif

callwrdisp(numnp,istack(ndptr+1))

cnode=0,attheendofnodelist

ccalculatemeanofxyzcoordinates

xmean=xmean/numnp

ymean=ymean/numnp

zmean=zmean/numnp

ccalculatestandarddeviationforxyzcoordinates

sodx=0

sody=0

sodz=0

doi=1,numnp

sodx=sodx+(dstack(xcptr+i)-xmean)**2

sody=sody+(dstack(ycptr+i)-ymean)**2

sodz=sodz+(dstack(zcptr+i)-zmean)**2

enddo

stdxyz

(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%/STDFORY

xCOORDINATES:

%G%/STDFORZCOORDINATES:

%G',stdxyz

(1),'')

creleasedynamicallyallocatedmemory

callHeapDealloc(hXcptr)

callHeapDealloc(hYcptr)

callHeapDealloc(hZcptr)

callHeapDealloc(hNdptr)

c*****requiredreturnvalue*****

999user03=0

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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