ANSYS二次开发培训练习题文档格式.docx

上传人:b****6 文档编号:21690843 上传时间: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

A.

1.拷贝文件

\ansys55\docu\menulist55.ans

\ansys55\docu\UIMENU.GRN

\ansys55\docu\UIFUNC1.GRN

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

editUIMENU.GRN

在第4780应为

AMainMenu

在第4803行插入以下几行:

Men_Training

Sep_

所得到的结果如下:

Men_Aux12

Men_RunStat

K_LN(BETA)

Fnc_UNDO

Fnc_FINISH

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

!

S413,76,330

TMenu

ATrainingMenu

DANSYSTrainingMENU

Fnc_Training

EEND

删除该行

XINDEXADDEDBYANSYS

以后的全部行

存盘退出

3.编辑新的菜单文件

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

Cmd_)/Go

4.修改menulist55.ans文件

editmenulist55.ans

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

d:

\user\UIMENU.GRN

\user\UIFUNC1.GRN

\user\UIFUNC2.GRN

\user\newmenu.grn

c:

\ansys55\DOCU\UICMDS.HLP

\ansys55\DOCU\UIELEM.HLP

\ansys55\DOCU\UIGUID.HLP

\ansys55\DOCU\UITHRY.HLP

\ansys55\DOCU\UIOTHR.HLP

5.启动ANSYS的launcher

在WorkingDirectory框中键入

按OK键,启动ANSYS界面

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

1.编辑文件a.dat

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)

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

3.输入文件a.dat

/input,a,dat

4.检查

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

*status,nnod

*status,nodes

*status,xy

*status,nelm

*status,elems

*status,ndlst

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

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

6.使用ANSYS列表命令

UtilityMenu->

File->

List->

BinaryFile

7.在弹出的对话框中

[DUMP]Recordstobelist中选ALLRecords

[FORM]Amtofoutputperrecord中选EntireRecords

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

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

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

SaveAs

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

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

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

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

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

\ansys55\custom\misc\intel\MakefileD:

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

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

custom

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

10.运行bintst.exe

bintst>

out.txt

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

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

E.用户命令:

编译并连接ANSYS提供的示例程序USER01.F;

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

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

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

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

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

\ansys55\custom\user\intel\Makefile

11.修改user01.F

修改以下几行

c

c*****user'

SCODEISINSERTEDHERE*****

write(iott,2000)

2000format(//'

*****CALLTOANSYS,INCDUMMYUSER01*****'

//)

c*****donotreturnthisresultcodeinarealuserroutine

user01=-654321

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

cuser01=0

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

_malloc"

_fflush"

_fread"

_fwrite"

_ftell"

_fseek"

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

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

在用户工作目录下

ansys-pansysul

ansys55cust-custom.\ansys.exe-pansysul

如果在其它目录下运行

\otherdir>

setpath=c:

\ansys55\bin\intel

ansys55cust-customd:

\user\ansys.exe-pansysul

setpath=d:

15.执行用户命令

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

在出现

BEGIN:

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

usr1

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

/show,win32

/menu,on

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

/show,x11

/show,x11c

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

在输入框中,键入命令

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

在ANSYSBEGIN提示信息后

/UCMD,aaa,1

aaa

以下是一个完整的程序,可由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)

ansysdef.inc"

stack.inc"

cGetnodalxyzlocationsandcalculatestandarddeviationof

cxcoordinates,ycoordinates,&

zcoordinates

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:

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