ANSYS程序的二次开发

2019-03-16 21:42

ANSYS程序的二次开发

标准ANSYS程序是一个功能强大、通用性好的有限元分析程序,同时它还具有良好的开放性,用户可以根据自身的需要在标准ANSYS版本上进行功能扩充和系统集成,生成具有行业分析特点和符合用户需要的用户版本的ANSYS程序。开发功能包括四个组成部分: 参数化程序设计语言(APDL) 用户界面设计语言(UIDL) 用户程序特性(UPFs) ANSYS数据接口

参数化程序设计语言(APDL)

参数化程序设计语言实质上由类似于FORTRAN77的程序设计语言部分和1000多条ANSYS命令组成。其中,程序设计语言部分与其它编程语言一样,具有参数、数组表达式、函数、流程控制(循环与分支)、重复执行命令、缩写、宏以及用户程序等。标准的ANSYS程序运行是由1000多条命令驱动的,这些命令可以写进程序设计语言编写的程序,命令的参数可以赋确定值,也可以通过表达式的结果或参数的方式进行赋值。从ANSYS命令的功能上讲,它们分别对应ANSYS分析过程中的定义几何模型、划分单元网格、材料定义、添加载荷和边界条件、控制和执行求解和后处理计算结果等指令。

用户可以利用程序设计语言将ANSYS命令组织起来,编写出参数化的用户程序,从而实现有限元分析的全过程,即建立参数化的CAD模型、参数化的网格划分与控制、参数化的材料定义、参数化的载荷和边界条件定义、参数化的分析控制和求解以及参数化的后处理。

宏是具有某种特殊功能的命令组合,实质上是参数化的用户小程序,可以当作ANSYS的命令处理,可以有输入参数或没有输入参数。

缩写是某条命令或宏的替代名称,它与被替代命令或宏存在一一对应的关系,在ANSYS中二者是完全等同的,但缩写更符合用户习惯,更易于记忆,减少敲击键盘的次数。ANSYS工具条就是一个很好的缩写例子。

用户界面设计语言(UIDL)

标准ANSYS交互图形界面可以驱动ANSYS命令,提供命令的各类输入参数接口和控制开关,用户在图形驱动的级别上进行有限元分析,整个过程变得直观轻松。用户图形界面设计语言(UIDL)就是编写或改造ANSYS图形界面的专用设计语言,主要完成以下三种图形界面的设计:

主菜单系统及菜单项 对话框和拾取对话框 帮助系统

通过用户界面设计语言(UIDL),用户可以在扩充ANSYS功能的同时建立起对应的图形驱动界面,如在主菜单的某位置增加菜单项,设计对应的对话框、拾取对话框,实现参数的输入和其它程序运行的控制,同时提供相应的联机帮助,使操作者能方便地获取系统帮助。

用户程序特性(UPFs)

用户程序特性(UPFs)向用户提供丰富的FORTRAN77用户程序开发子程序和函数,用户利用它们从开发程序源代码的级别上扩充ANSYS的功能。使用这些子程序和函数,编写用户功能的源代码程序,在与ANSYS版本要求匹配的FORTRAN或C++编译器上重新编译和连接,生成用户版本的ANSYS程序。另外,还提供了外部命令功能,允许用户创建ANSYS

1

可以利用的共享库。用户可以开发下列方面的功能程序:

开发用户子程序实现从ANSYS数据库中提取数据或将数据写入ANSYS数据库。该种子程序可以编译连接到ANSYS中,此时ANSYS提供了10个数据库操作命令;如果作为外部命令处理,可以在ANSYS的任何模块中运行;

利用ANSYS提供的子程序定义各种类型的载荷,其中包括BF或BFE载荷、压力载荷、对流载荷、热通量和电荷密度等;

利用ANSYS提供的子程序定义各种材料特性,包括塑性、蠕变、膨胀、粘塑性、超弹、层单元失效准则等;

利用ANSYS提供的子程序定义新单元和调整节点方向矩阵; 利用ANSYS提供的子程序修改或控制ANSYS单元库中的单元;

利用UEROP创建用户优化程序;ANSYS程序作为子程序在用户程序中调用。

ANSYS数据接口

ANSYS程序在分析过程中存在大量的设计分析数据,一部分在运行时置于计算机的内存之中,一部分以文件的形式存放在工作目录中。除LOG文件和出错文件等文本文件之外,其它文件都是二进制文件,分别以不同的格式进行写入,如:数据库文件、结果文件、模态结果文件、单元矩阵文件、子结构矩阵文件、对角化刚度矩阵文件、缩减位移矩阵文件、缩减频率矩阵文件和完整的刚度-质量矩阵文件等等。ANSYS数据接口详细地阐述每种二进制文件的格式,然后介绍从这些数据文件提取各种数据的子程序或函数,从而实现对二进制数据的读写和修改。显然,它满足了用户以下三种基本需要:检查或观察过程数据或结果数据;通过修改ANSYS的数据文件达到控制或修正计算;提取结果数据进行分析处理。

ANSYS数据接口提供了两条模型和数据库信息的转换和传递命令,即CDREAD和CDWRITE,前者将一个符合ANSYS读入或写出格式的模型和数据库文件信息读入到ANSYS数据库中,后者的作用正好相反。同时,为了减少转换或传递的时间,提高效率,还提供重定向自由度映射关系和其它数据库代码化的辅助命令,如/DFLAB、NBLOCK、EBLOCK、EN等等。该功能大大提高了ANSYS与其它有限元程序之间的模型数据的传递和转换,也实现了ANSYS自身数据库文件代码化后便于存储或机器之间的传递。

ANSYS数据接口还阐述了图形文件的格式,帮助用户将ANSYS图形文件转换成其它格式,如AI等。

2

解析UIDL篇

1结识UIDL

UIDL是什么?Ansys二次开放语言的一种。

OK,那么它能带给我们什么?很多很多,如果你想让你在Ansys中制作的用户界面具有专业水准的话,请来结识一下我们的UIDL把。 ? 全称:

UIDL的全名是User Interface Design Language,是Ansys中二次开发工具方面的三大金刚之一。GUI方面几乎全部的二次开发功能都将由它运筹帷幄。 ? 功用:

? 组织我们自己强大的菜单系统。想象一下我们在Ansys中也能轻松做出可以和

VC,VB之类主流GUI开发工具媲美的菜单响应效果,Ansys的世界将是多么的亲切、友好。

? 构建功能繁复的对话框。Ansys中美观易用的ContactWizard对话框级联界面

一定让你印象很深把,有了它,即使是最菜鸟的门外汉也能构建一流的工程算例,Ansys5.7中的DesignSpace应该就是无可争辩的例证之一。虽然从UNIX内核上讲(Windows下的东西是Ansys的后期移植,很多技术还不成熟,这里就不加讨论了),它们多构建在繁复的TCL编程基础上,但我们利用强大的UIDL工具,也能轻松架构起我们自己的实用对话框向导。 ? 建立自己的联机帮助

Ansys中的联机帮助(尤其是UNIX下的搜索引擎)非常实用,可以说是我所接触过许多有限元平台中最为好用的几种帮助平台之一。UNIX下的关键字查询简直是帅呆了,想构建自己完善的帮助系统吗?UIDL同样是这方面不可或缺的理想开发工具。

2看看UIDL的模样

认识了这位Ansys二次开发中的大侠了巴,现在我们就来进一步和它交流交流,把我们的感性认识上升到理性层次中。 2.1 UIDL控制文件总结构

一个完整的UIDL控制文件大致如一下结构:

控制文件头 结构块结构 …………… 说明:

任何一个UIDL控制文件开头都是一个控制文件头,其后接一个或多个结构块结构。

2.2控制文件头结构

为避免鄙人在这里滔滔不绝,而读者在台下不知所云的尴尬,我们在以后的讲解中都将从一些典型结构例子入手,剖析清楚其各个部分的详细结构,当然这里从例子入手

3

的剖析手段只能做到抛砖引玉,要想熟悉的了解各个命令的详细信息,请参阅UIDL手册:

一个典型的控制文件头如下所示:

---------------------------------------------------------------------------------------------

:F UIMENU.GRN

:D Modified on %E%, Revision (SID) = 5.181.1.67 - For use with ANSYS 5.5 :I 0, 0, 0 :!

--------------------------------------------------------------------------------------------- 几点说明: 1. 控制文件头第一行必须有:F filename,filename是UIDL控制文件名。 2. 控制文件头第二行必须有:D description,description是对本文件的一些说明。

注意到description中有时能带%E%扩展,但只有当你拥有类似SCCS的系统(含一源码控制系统),ANSYS才能 有效的进行%E%扩展,否则请手动把这些说明替代%E%写入description中。 3. 控制文件第三行必须有:I 0, 0, 0,各个0必须出现在第9、

18、27行。用户只需要在这些位置填入0,ANSYS在调用该文件后会自动在这些位置填入GUI界面的位置信息。 4. :!这一行通常是用来在UIDL控制文件中做分隔标记的,可有可无,这里用来

分隔控制文件头和结构块结构,建议在控制文件头和结构文件块之间,以及各个控制文件块之间都加一行:!加以间隔。

2.3结构块结构

结构块结构是一个UIDL控制文件的核心,它涵盖了菜单信息,命令信息,以及帮助文件信息,按照其不同的类型可划分为菜单结构块,命令结构块和帮助结构块。一般来说函数结构块还都伴随着构建一个对话框结构。 1. 结构块结构基本框架

麻雀虽小,五脏俱全,让我们先看一看结构块的基本结构: 头部分 数据控制部分 尾部分 2. 例子说明

这里基于一个菜单结构块描述一下这些基本结构的细节,让大家有一个感性认识: --------------------------------------------------------------------------------------

头部分

:N Men_Add

:S 0, 0, 0 :T Menu :A Add :C :D Add

数据控制部分 Fnc_VADD Fnc_AADD Fnc_LCOMB

4

尾部分

:E END 分隔 :!

----------------------------------------------------------------------------------------

几点说明: ? 头部分

? :N行定义一唯一的结构控制块名。

? :S行定义结构控制块位置信息。用户只需在第9、16、23行输入0

即可,ANSYS在调用该文件中将自动为这些域填入合适的值。

? :T行定义该结构控制块的类型,可选类型有Menu、Cmd或者Help。 ? :A行对不同类型的结构控制块有不同的功用,在Menu块中通常用

来定义出现在GUI菜单上的名字。 ? :D行通常用来描述该结构块的信息。

? 头部分中还可以带许多其他命令,例如ANSYS内部命令等,这里就

不详述了,我们将在例子中看到其具体用法。

? 数据控制部分

数据控制部分根据不同的结构控制块有不同的写法,但必须至少有一个数据控制行。例如在菜单结构块中我们可以在其中使用Men_String来调用其他菜单项,还可以使用Fnc_String命令调用一些命令。String对应于特定的菜单名部分或者命令名部分。其他具体细节这里就不详述了。我们将在具体实例中看到他们是如何构建实现的。 ? 尾部分

:E END标志着一个结构块的结束。

? 分隔(可选)

一般说来,我们将在结构块和结构块之间加入:!来间隔(可选)。

3 Ansys调用UIDL的过程

上面我们已经熟悉了整个UIDL控制文件的结构,可惜我们还是空有武器,鲜有用武

之地,Ansys到底是怎么使用UIDL的呢?搞清楚这一点,我们才能够游刃有余的控制整个GUI界面的定制,在这部分里我们将描述一下Ansys控制UIDL文件的过程。

下面的一些设置情况都是基于工作站版本的ANSYS5.5,其他版本的ANSYS的设置处理也类似,这里就不加赘述了。

ANSYS在调用GUI界面时会自动调用menulist55.ans文件,该文件中描述了UIDL前处理器到哪里去寻找UIDL控制文件。ANSYS在其docu/目录中有一个基本的menulist55.ans文件和对应的基本UIDL控制文件。默认情况下,ANSYS就调用这一menulist55.ans文件。

下面是这一基本menulist55.ans文件的内容: ---------------------------------------------------------- /ansys55/docu/UIMENU.GRN /ansys55/docu/UIFUNC1.GRN /ansys55/docu/UIFUNC2.GRN /ansys55/docu/UICMDS.HLP

5


ANSYS程序的二次开发.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:农产品电子商务交易平台建设可行性实施方案 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: