ANSYS二次开发培训练习题
更新时间:2024-01-19 17:23:01 阅读量: 教育文库 文档下载
- arcgis二次开发培训推荐度:
- 相关推荐
我从老板那里拿来的,好东西哦,给我加1分吧! 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. 以下练习答案以ANSYS 5.5.1 UP199810001 Windows 95/98/NT的University Low版本(产品号为ansysul)为例,其它版本与此类似。
2. 假定机器中已经安装了Digital Visual Fortran 5.0C以上的版本 假设ANSYS安装目录为C:\\ANSYS55 3. 假设用户工作目录为D:\%user 4. 约定
DOS提示 D:\%user>
DOS输入 copy c:\\ansys55\\docu\\UIFUNC2.GRN ANSYS输入框 ET,1,42 数据文件 :N Men_Training UIDL
E. 使用UIDL在ANSYS主菜单中增加一个菜单项,点击后可以出现一个子菜单或激活一个对话框。
A.
1. 拷贝文件
D:\%user>copy c:\\ansys55\\docu\\menulist55.ans D:\%user>copy c:\\ansys55\\docu\\UIMENU.GRN D:\%user>copy c:\\ansys55\\docu\\UIFUNC1.GRN D:\%user>copy c:\\ansys55\\docu\\UIFUNC2.GRN 2. 在主菜单中加入自定义菜单项 D:\%user>edit UIMENU.GRN 在第4780应为 :A Main Menu
在第4803行插入以下几行: Menu_Training Sep_
所得到的结果如下: Men_Aux12 Men_RunStat K_LN(BETA) Sep_ K_LN(BETA) Fnc_UNDO Sep_ Men_Training Sep_ Fnc_FINISH
将光标移至第4812行,插入以下一段 :!
:N Men_Training :S 413, 76, 330 :T Menu :A Training Menu
ANSYS Training MENU
Fnc_Training :E END :! 删除该行
:X INDEX ADDED BY ANSYS 以后的全部行 存盘退出
3. 编辑新的菜单文件 D:\%user>edit newmenu.grn 键入以下文字 :F UIMENU.GRN
Modified on 98/10/01, Revision (SID) = 5.181.1.68 - For use with ANSYS 5.5
:I 1, 759, 809 :!
:N Fnc_Training :S 627, 449, 170 :T Command
:A ANSYS Customizing Training
Training Exercises
: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
 
rm_[/TITLE] Welcome to ANSYS Training
Typ_Char,72,72  
rm_[/TITLE] Welcome to ANSYS Training
Cmd_)/Go
:E END :! 存盘退出
4. 修改menulist55.ans文件 D:\%user>edit menulist55.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 在Working Directory框中键入 d:\%user
按OK键,启动ANSYS界面 APDL
E. 使用APDL编制一个可以读写有限元模型的小程序,要求读出所有节点号和单元号,节点坐标以及单元节点列表。 A.
1. 编辑文件a.dat D:\%user>edit a.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 或
c get number of currently selected nodes
numnp = ndinqr (0,DB_NUMSELECTED)
if (numnp .le. 0) go to 999
c allocate memory for x, y, & z coordinates of nodes
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)
c loop through all selected nodes
i=1 node = 0 xmean = 0.0d0 ymean = 0.0d0 zmean = 0.0d0 10 node = ndnext(node)
if (node .gt. 0) then
c get xyz coordinates
ksel = ndgxyz (node,xyz(1))
c store this node's xyz coordinates
dstack(xcptr + i) = xyz(1) dstack(ycptr + i) = xyz(2) dstack(zcptr + i) = xyz(3) istack(ndptr + i) = node
c while we're looping, accumulate sums to calculate means
xmean = xmean + xyz(1) ymean = ymean + xyz(2) zmean = zmean + xyz(3)
c increment index
i = i + 1
c loop back up for next selected node
goto 10
endif
call wrdisp (numnp, istack(ndptr+1))
c node = 0, at the end of node list
c calculate mean of xyz coordinates
xmean = xmean / numnp ymean = ymean / numnp zmean = zmean / numnp
c calculate standard deviation for xyz coordinates sodx = 0 sody = 0 sodz = 0 do i=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 ***** write to output file *****
iott = wrinqr(WR_OUTPUT)
write (iott,2000) stdxyz(1),stdxyz(2),stdxyz(3) 2000 format (/' STD FOR X COORDINATES:',G12.5,/,
X ' STD FOR Y COORDINATES:',G12.5,/, X ' STD FOR Z COORDINATES:',G12.5)
c ***** write to GUI window *****
call erhandler ('user03',5000,2,
x 'STD FOR X COORDINATES: %G %/ STD FOR Y
x COORDINATES: %G %/ STD FOR Z COORDINATES: %G',stdxyz(1),' ')
c release dynamically allocated memory
call HeapDealloc(hXcptr) call HeapDealloc(hYcptr) call HeapDealloc(hZcptr) call HeapDealloc(hNdptr)
c ***** required return value ***** 999 user03 = 0
return end
subroutine wrdisp (nnod, nodes) #include \ #include \
integer nnod, nodes(nnod)
external wrinqr, disget integer wrinqr, disget
integer iott,i,rc,k double precision value(4)
iott = wrinqr(WR_OUTPUT) do i=1,nnod
rc = disget(nodes(i), 1, value(1)) if (rc .eq. 0) then
write (iott,1000) nodes(i) 1000 format ('Nodes=',i3,' No x displacement constraint') else
write (iott,1010) nodes(i), (value(k), k=1,4) 1010 format ('Nodes=',i3,' UX=',4(F8.2,',')) endif enddo
return end 将上面程序编译并连接,
启动ANSYS,并输入下面的命令流,观察OUTPUT窗口的输出信息 /prep7 blc4,0,0,4,2 et,1,42 esize,.5 amesh,1 nsel,s,loc,x,4 d,all,ux,8 nsel,s,loc,x,0 d,all,ux,-9 nsel,all usr3
E. 使用ANSYS提供子程序试验矢量与矩阵的操作
以下是一个完整的程序用来说明矢量矩阵操作{c}={a}
*deck,user01 user parallel ANSYS,INC
function user01 (intin,dpin,ch4in,ch8in) #include \
external wrinqr integer wrinqr
integer user01,intin(12), iott double precision dpin(12) character*4 ch4in(12) character*8 ch8in(12) c
double precision a(3), b(4,3), c(4) integer i,j,k data a /5,6,7/
data b /3,3,9,8, 4,7,4,3, 5,9,5,2/
iott = wrinqr(2)
call vzero (c(1), 4)
write (iott, *) '*** matrix b =' do i=1,4
write (iott, 101) (b(i,k), k=1,3) enddo
write (iott, *) '*** vector a=' do i=1,3
write (iott, 100) a(i) enddo
call maxv(b(1,1),a(1),c(1), 4,3) write (iott, *) '*** vector c=' do i=1,4
write (iott, 100) c(i) enddo 100 format (F9.2, 3x) 101 format (3(F9.2, 3x))
user01 = 0 c
return end
E. 用户自定义材料
1. 拷贝相关文件
D:\%user>copy c:\\ansys55\\custom\%user\\intel\%userpl.F 2. 运行编译连接(参见用户命令) 3. 启动ANSYS(参见用户命令) D:\%user>ansys55cust -custom .\\ansys.exe -p ansysul 4. 编辑命令流文件a.dat D:\%user>edit a.dat
/PREP7 et,1,42 mp,ex,1,2e6 mp,nuxy,1,.3 r,1,100,0 tb,user,1 tbdata,1,100,2e3
blc4,0,0,4,2 esize,.5 type,1 mat,1 real,1 amesh,1
nsel,s,loc,x,0 d,all,all,0 nsel,s,loc,x,4 nsel,r,loc,y,0 f,all,fy,-1000 nsel,all /solu antype,static time,1 solve
5. 启动ANSYS(参见用户命令) D:\%user>ansys55cust -custom .\\ansys.exe -p ansysul 6. 输入a.dat,记录结果 /input,a,dat
E. 用户单元
1. 拷贝相关文件
D:\%user>copy c:\\ansys55\\custom\%user\\intel\?1.F D:\%user>copy c:\\ansys55\\custom\%user\\intel\%uel101.F
2. 编辑uel101.F 将下面的程序段 c
call TrackBegin ('uel101') c
c --- define initial data
c --- elmdat pointers defined in elparm
mat = elmdat(PMAT) 修改为: c
call TrackBegin ('uel101') iott=wrinqr(2)
write (iott, *) 'In user element',elem c
c --- define initial data
c --- elmdat pointers defined in elparm
mat = elmdat(PMAT) 3. 运行编译连接(参见用户命令) 4. 编辑命令流文件a.dat D:\%user>edit a.dat /PREP7 et,1,USER101 mp,ex,1,2e6 mp,nuxy,1,.3 r,1,100,0 k k,,100,0 l,1,2 esize,10 type,1 mat,1 real,1 lmesh,1
nsel,s,loc,x,0
d,all,all,0 nsel,s,loc,x,100 f,all,fx,1000 nsel,all /solu antype,static time,1 solve
5. 启动ANSYS(参见用户命令) D:\%user>ansys55cust -custom .\\ansys.exe -p ansysul
6. 输入a.dat,注意OUTPUT窗口中打印出来的信息,记录结果 /input,a,dat
7. 修改命令流文件a.dat,将单元类型换成LINK8,重新分析,并与LINK8对比 D:\%user>edit a.dat /PREP7 et,1,LINK8 mp,ex,1,2e6
E. 使用/DEBUG命令调试ANSYS单元矩阵及载荷矢量
1. 在ANSYS中以自己最熟悉的单元建立一个有限元模型,然后加载荷、边界条件,设定求解参数,如Time, Deltime等 2. 在ANSYS Input Box框中输入以下命令 /DEBUG,-3,,,1
3. 求解,键入求解命令 SOLVE
4. 观察OUTPUT窗口的输出
正在阅读:
ANSYS二次开发培训练习题01-19
国际贸易实务习题答案完整版04-18
(河北专版)2022春中考英语命题研究第三部分中考题型攻略篇题型七04-06
废墟中的孩子作文400字07-05
小学生安全出行演讲稿范本参考04-03
托福阅读材料之以叔要当爸爸了09-16
民办非企业单位条例与2016修订稿对照表 - 图文04-25
日本料理的饮食礼节:04-07
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 练习题
- 培训
- 开发
- ANSYS
- 2018年中国建筑石油沥青行业深度研究及未来走势预测报告目录
- 中国古代文学史题库1(先秦文学到魏晋南北朝文学)
- 钉钉工作计划
- 产品经理岗位说明书及激励方案V1-最新版
- 计算机网络复习题含答案
- 机械工程概论答案1-5
- 三桩桩基承台计算
- 见证取样(2) - 图文
- 最新人教版三年级数学下册全册导学案 - 图文
- 委托代理理论及其运用文献综述
- 部编人教版《道德与法治》八年级上册6.1《我对谁负责 谁对我负责》教案
- 后缀树
- 基于左支座零件的工艺及工装设计
- 万州区第二届教师行动研究成果获奖名单 - 图文
- 中国人民解放军铁拳部队--解放军第15空降军
- 9上海市第九届高一物理竞赛复赛试题及答案
- ITS市场营销模式
- 14年北京中考物理一模力学计算题汇总
- 行政学的公共性价值追求
- 安徽大学计算机科学与技术学院,2012最新研究生奖学金评定标准