ANSYS二次开发概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ANSYS二次开发概述
标准ANSYS程序是一个功能强大、通用性好的有限元分析程序,同时它还具有良好的开放性,用户可以根据自身的需要在标准ANSYS版本上进行功能扩充和系统集成,生成具有行业分析特点和符合用户需要的用户版本的ANSYS程序。
开发功能包括四个组成部分:
⑴.参数化程序设计语言(APDL)
⑵.用户界面设计语言(UIDL)
⑶.用户程序特性(UPFs)
⑷.ANSYS数据接口
APDL所能实现的功能通俗的说来应该是次于UPF而强与UIDL,但实际上是由于三者具体侧重点不同造成的:UIDL主要控制GUI界面的各类二次开发方法,涉及的分析部分就要少一些,APDL可以称其为和分析部分频繁打交道的一组小型工具,功能强大,但不和UIDL一样能够非常具体的针对某一两方面的二次开发处理,通常情况下融合在分析的角角落落中。
UPF是三者之间的最强者,能完成最复杂的二次开发工作,比如说构建新单元,复杂数据库交互,外围命令定制等,但UPF在很多情况下也借助了APDL命令来完全实现其功能。
同样也能在UIDL中嵌入APDL命令,来构建比较复杂的GUI二次开发工作。
UIDL、APDL和UPF三者各有所长,密不可分。
结合使用三者,就能够实现任何强大的分析功能。
5.2 Ansys的开发功能组成部分Ansys的开发功能由三个部分组成:参数化程序设计语言(APDL)、用户界面设计语言(UIDL)、用户程序特性(UPFs)
5.2.1 参数化程序设计语言(APDL)
参数化程序设计语言(APDL-ANSYS Parametric Design Language)实质上由类似于FORTRAN77的程序设计语言部分和1000多条ANSYS命令组成。
其中,程序设计语言部分与其它编程语言一样,具有参数、数组表达式、函数、流程控制(循环与分支)、重复执行命令、缩写、宏以及用户程序等。
标准的ANSYS程序运行是由1000多条命令驱动的,这些命令可以写进程序设计语言编写的程序,命令的参数可以赋确定值,也可以通过表达式的结果或参数的方式进行赋值。
从ANSYS命令的功能上讲,它们分别对应ANSYS分析过程中的定义几何模型、划分单元网格、材料定义、添加载荷和边界条件、控制和执行求解和后处理计算结果等指令。
很多情况下,APDL主要用在优化设计或者自适应网格划分中。
用户可以利用程序设计语言将ANSYS命令组织起来,编写出参数化的用户程序,从而实现有限元分析的全过程,即建立参数化的CAD模型、参数化的网格划分与控制、参数化的材料定义、参数化的载荷和边界条件定义、参数化的分析控制和求解以及参数化的后处理。
宏是具有某种特殊功能的命令组合,实质上是参数化的用户小程序,可以当作ANSYS的命令处理,可以有输入参数或没有输入参数。
缩写是某条命令或宏的替代名称,它与被替代命令或宏存在一一对应的关系,在ANSYS中二者是完全等同的,但缩写更符合用户习惯,更易于记忆,减少敲击键盘的次数。
ANSYS工具条就是一个很好的缩写例子。
5.2.2 用户界面设计语言(UIDL)
标准ANSYS交互图形界面可以驱动ANSYS命令,提供命令的各类输入参数接口和控制开关,用户在图形驱动的级别上进行有限元分析,整个过程变得直观轻松。
用户图形界面设计语言(UIDL-User Interface Design Language)就是编写或改造ANSYS图形界面的专用设计语言,GUI方面几乎全部的二次开发功能都将由它完成,主要完成以下三种图形界面的设计:
⑴.主菜单系统及菜单项
⑵.对话框和拾取对话框
⑶.帮助系统
通过用户界面设计语言(UIDL),用户可以在扩充ANSYS功能的同时建立起对应的图形驱动界面,如在主菜单的某位置增加菜单项,设计对应的对话框、拾取对话框,实现参数的输入和其它程序运行的控制,同时提供相应的联机帮助,使操作者能方便地获取系统帮助。
主要功能有:
[1] 组织强大的菜单系统。
在Ansys中也能轻松做出可以和VC,VB之类主流GUI开发工具媲美的菜单响应效果。
[2] 构建功能繁复的对话框。
利用强大的UIDL工具,也能轻松架构起进行大型工程分析的实用对话框向导。
[3] 建立自己的联机帮助
Ansys中的联机帮助非常实用,构建自己完善的帮助系统,UIDL是这方面不可或缺的理想开发工具
一个完整的UIDL控制文件结构大致如图5-1:
控制文件头
结构块结构
图5-1 UIDL控制文件结构图
任何一个UIDL控制文件开头都是一个控制文件头,其后接一个或多个结构块结构。
控制文件头第一行必须有:F filename,filename是UIDL控制文件名。
控制文件头第二行必须有:D description,description是对本文件的一些说明。
注意到description中有时能带%E%扩展,但只有当拥有类似SCCS的系统(含一源码控制系统),ANSYS才能有效的进行%E%扩展,否则只有手动把这些说明替代%E%写入description中。
控制文件第三行必须有:I 0, 0, 0,各个0必须出现在第9、18、27行。
只要在这些位置填入0,ANSYS在调用该文件后会自动在这些位置填入GUI 界面的位置信息。
结构块结构是一个UIDL控制文件的核心,它涵盖了菜单信息,命令信息,以及帮助文件信息,按照其不同的类型可划分为菜单结构块,命令结构块和帮助结构块。
一般来说函数结构块还都伴随着构建一个对话框结构。
结构块结构基本框架如图5-2。
头部分
数据控制部分
尾部分
图5-2 UIDL结构块结构图
ANSYS在调用GUI界面时会自动调用menulistxx.ans文件(由版本不同而改变),该文件中描述了UIDL前处理器到哪里去寻找UIDL控制文件。
ANSYS在其docu/目录中有一个基本的menulistxx.ans文件和对应的基本UIDL控制文件。
默认情况下,ANSYS就调用这一文件。
5.2.3用户程序特性(UPFs)
用户程序特性(UPFs)向用户提供丰富的FORTRAN77用户程序开发子程
序和函数,用户利用它们从开发程序源代码的级别上扩充ANSYS的功能。
使用这些子程序和函数,编写用户功能的源代码程序,在与ANSYS版本要求匹配的FORTRAN或C++编译器上重新编译和连接,生成用户版本的ANSYS程序。
另外,还提供了外部命令功能,允许用户创建ANSYS可以利用的共享库。
用户可以开发下列方面的功能程序:
⑴.开发用户子程序实现从ANSYS数据库中提取数据或将数据写入ANSYS 数据库。
该种子程序可以编译连接到ANSYS中,此时ANSYS提供了10个数据库操作命令;如果作为外部命令处理,可以在ANSYS的任何模块中运行;
⑵.利用ANSYS提供的子程序定义各种类型的载荷,其中包括BF或BFE 载荷、压力载荷、对流载荷、热通量和电荷密度等;
⑶.利用ANSYS提供的子程序定义各种材料特性,包括塑性、蠕变、膨胀、粘塑性、超弹、层单元失效准则等;
⑷.利用ANSYS提供的子程序定义新单元和调整节点方向矩阵;
⑸.利用ANSYS提供的子程序修改或控制ANSYS单元库中的单元;
(6).利用UEROP创建用户优化程序;ANSYS程序作为子程序在用户程序中调用。
一个典型的UPFs包括下列步骤:
1.在FORTRAN77中编制用户程序。
在ANSYS中所有的用户程序源代码都是公开的。
大部分完成至少一个简单的功能,因此在编制程序前应列出一份完整的可用程序表。
2.编译并将用户程序连接到ANSYS程序中。
在ANSYS Installation and Configuration Guide中有这方面的详细描述。
3.用户可能要验证自己做的改动是否影响其他ANSYS标准功能的使用。
可以通过做几个ANSYS Verification Manual中的例题来验证。
在ANSYS中也有输入这些问题的方法。
4.用用户认为可以满足要求的过程检验用户子程序。
请牢记本步由用户完成,用户要对子程序负责。
ANSYS程序将在用户使用时自动激活一些子程序,如用户单元等。
例如,要激活一个用户单元,仅仅在模型建立时指定它为其中的一个单元类型(ET命令或MainMenu>Preprocessor>Element Type>Add/Edit/Delete),将单元类型属性指针设置好,然后用该单元进行实体划分[AMESH,VMESH等]或直接生成单元[ET等命令]即可。
对于其他一些UPFs,用户需要做一些别的操作来激活它们。
即,需要输入
USRCAL命令或选择下列菜单:Main Menu>Preprocessor>Loads>-Load Step Opts-Other>User Routines或Main Menu>Solution>-Load Step Opts-Other>User Routines。
如果没有做这一步,将执行标准的ANSYS功能。
例如,如果想施加对流载荷,即便连接了用户对流子程序,缺省时仍是使用标准的ANSYS功能。
因此用户必须使用USRCAL命令(或相应路径)激活正确的用户子程序才能使用用户过程。
请参阅USRCAL命令描述得到命令可以影响的用户过程列表。
使用NSVR命令定义在用户过程中要存储的另外的变量数目。
(NSVR命令无相应的路径)。
另一个有用的命令是/UCMD,可以使用户在用户过程之外生成自己的命令。
(/UCMD命令无GUI路径。
)假定用户连接抛物线形分布压力的子程序。
如果子程序名为USERnn(nn=1到10),可以用自己的命令调用程序:/UCMD,PARAB,1
PARAB将成为合法的ANSYS命令,用来调用用户子程序USER01。
可以用命令调用10个子程序。
将/UCMD命令嵌入启动文件(START.ANS)中,用户就可以在所有ANSYS过程中使用用户子程序。
如有侵权请联系告知删除,感谢你们的配合!
如有侵权请联系告知删除,感谢你们的配合!。