1.ANSYS二次开发概述
ANSYS是世界上著名的大型通用有限元分析软件,它具有强大的求解器和前、后处理功能,能为我们解决复杂、庞大的工程实际问题。但是作为通用有限元软件,ANSYS在具体的专业深度上有所欠缺,对用户的力学、有限元知识以及工程经验有较高的要求,因而,该软件的学习周期较长、掌握起来的难度较大。对于各个专业的工程师来说,驾御ANSYS并不是一件容易的事情,因为ANSYS不是针对具体行业的专业软件,其灵活的设计分析和大量的选项使初级用户不知如何着手。工程师们更渴望使用像ANSYS那样具有强大前后处理且操作简单的专业软件。因此对这种通用性强的软件进行二次开发就显的非常必要了。
1.1 ANSYS二次开发的途径
ANSYS 程序是一个功能强大、通用性好的有限元分析程序,同时它还具有良好的开放性,用户可以根据自身的需要在标准ANSYS 版本上进行功能扩充和系统集成,生成具有行业分析特点和符合用户需要的用户版本的ANSYS 程序。这是对其进行二次开发的基础。开发功能包括由三个部分:参数化程序设计语言(APDL)、用户界面设计语言(UIDL)、用户程序特性(UPFs)。
1.1.1 参数化设计语言APDL
ANSYS参数化设计语言APDL用建立智能分析的手段为用户提供了自动循环的功能,也就是说,程序的输入可设定为根据指定的函数、变量以及选出的分析标准决定输入的形式。APDL允许复杂的数据输入,使用户实际上对任何设计或分析有控制权。例如尺寸、材料、载荷、约束位置和网格密度等。APDL扩展了传统有限元分析之外的能力,并扩展了更高级运算,包括灵敏度研究、零件库参数化建模,设计修改和设计优化。APDL是一种为ANSYS二次开发专门设计开发的解释性文本语言,其内容包括参数、数组参数、表达式和函数、分支和循环、重复功能和缩写以及宏和用户程序等。
1.1.2 用户界面工具 UIDL
用户图形界面设计语言UIDL就是编写或改造ANSYS的图形界面的专用语言,主要完成以下三种图形界面的设计:
1. 主菜单系统及菜单项
2. 对话框和拾取对话框
3. 帮助系统
用户界面语言UIDL,用户可以在扩充ANSYS功能的同时建立起对应的图形驱动界面。实际上,ANSYS软件程序结构分内核与界面两部分,二者之间通过功能检索号联系,只要检索号正确,界面是何种形式无关紧要,因此,界面的变化不会对程序内核造成任何改变。根据该原理,用户可以实现对ANSYS界面的汉化,当然,也可以以汉化界面驱动用户自己的程序。
1.1.3 用户可编程特征UPFs
用户可编程特性(UPFs)向用户提供丰富的FORTRAN77用户子程序和函数。用户利用它们从开发程序源代码的级别上扩充ANSYS功能。使用这些子程序和函数,编写用户功能的源程序,在与ANSYS版本要求匹配的FORTRAN或C++编译器上重新编译和连接,生成用户版本的ANSYS程序。另外,还提供了外部命令,允许用户创建ANSYS可以利用的共享库。
1.2 ANSYS二次开发工具比较
APDL所能实现的功能通俗的说来应该是次于UPFs而强与UIDL,但实际上是由于三者具体侧重点不同造成的:UIDL主要控制GUI界面的各类二次开发方法,涉及的分析部分就要少一些,APDL可以称其为和分析部分频繁打交道的一组小型工具,功能强大,但不和UIDL一样能够非常具体的针对某一两方面的二次开发处理,通常情况下的他融合在分析的角角落落中。UPFs是三者之间的最强者,他能完成最复杂的二次开发工作,比如说构建新单元,复杂数据库交互,外围命令定制等,但UPFs在很多情况下也借助了APDL命令来完全实现其功能。同样我们也能在UIDL中嵌入APDL命令,来构建比较复杂的GUI二次开发工作。
2.基于APDL有限元优化技术的一般步骤
基于APDL的参数化设计的方法采用ANSYS的批处理方法进行优化的,其主要的优化设计过程通常包括以下几个步骤,这些步骤根据用户所选用优化方法的不同(批处理GUI方式)而有细微的差别。
2.1 生成分析文件
生成分析文件与通常的ANSYS分析并没有很大的不同,唯一的区别就是:优化的分析文件必须是参数化的。也就是说,必须定义一些参量,至少要把所有的设计变量,状态变量和目标变量定义为参量形式。而且,用于优化的参量只能是标量数值参量,而不是数组或者字符参量。
2.2 建立优化过程中的参数
在GUI方式下,优化过程中的参数一般在ANSYS数据库中用分析文件来建立,这样做的好处是初始参数值可以作为一阶方法的起点,然而,对于各种优化过程来说,在数据库中的参数可以在GUI下进行操作,便于定义优化变量。
2.3 进入OPT,指定分析文件
首次进入优化处理器时,ANSYS数据库中的所有数据会自动作为设计序列1,这些参数值假定是一个设计序列。在GUI方式下,用户必须指定分析文件名,这个文件用于生成优化循环文件Jobname.LOOP,在ANSYS优化处理器中,分析文件名无缺省值,用户必须指定一个分析文件名,否则将出错。并且在分析文件中,/PREP7或/OPT命令必须出现在行的第一个非空字符处。在批处理方式中,分析文件通常是批处理命令流的第一部分,从文件的第一行命令到命令/OPT第一次出现时,其缺省的分析文件名是Jobname.BAT,因此在批处理方式下不需要指定分析文件名。
2.4 指定优化变量
即要求用户指定哪些是设计变量、哪些是状态变量和目标函数,对于设计变量和状态变量,用户可以指定其最大和最小值,同时每一个变量都有一个公差值,这个公差值可以用户输入,也可以由程序自动选取。用户可以在任何时间简单地通过重新定义参数来改变已经定义过的参数,也可以删除一个优化变量,即该变量将不再作为优化变量使用,但该参数还存在。
2.5 选择优化工具或优化方法
优化方法是使单个函数在控制条件下达到最小值的传统优化方法。它由零阶法、一阶法和用户自定义方法。但在使用任何一种方法之前,用户必须指定一个目标函数。一般来说,一阶法精度较高,但是耗费机时;零阶方法速度较快,其精度较低,但对大多数工程问题而言,零阶分析方法足够了。
2.6 指定优化循环控制方式
每一种优化方法和优化工具都有相应的循环控制参数,因此在指定好优化优化方法和优化工具后,用户还要选择与此工具和方法相对应的循环控制参数。
2.7 进行优化分析
在进行优化分析时,优化循环文件Jobname.LOOP会根据分析文件生成,循环在满足下列情况下终止:收敛、中断、分析完成。所有优化变量和其他参数在每次迭代后将存储在优化数据文件Jobname.OPT中,最多可以存储130组这样的序列,如果已经达到了130个序列,那么其中数据最“不好”的序列将被删除。
2.8 察看设计序列结果
在优化设计完成后,用户可以列出指定序列号的参数值,或列出所有参数的值;也可以用图形的方式显示指定的参数随迭代次数的变化,可以看出变量是如何随迭代过程变化的。同时也可以在POST1或POST26中对分析结果进行后处理,在缺省的方式下,最后一个设计序列的结果存储在文件Jobname.RST或Jobname.RTH 中,如果在运行前将命令OPKEEP设置为on,则非常好的设计序列的数据也将存储在数据库和结果文件中,非常好的结果在文件Jobname.BEST(BRTH)中,非常好的数据库在文件Jobname.BDB中。