1 ANSYS二次开发工具
1.1 结识UIDL
UIDL的全名是User Interface Design Language,是Ansys中二次开发工具方面的三大金刚之一。GUI方面几乎全部的二次开发功能都将由它运筹帷幄。
功用:
(1)组织我们自己强大的菜单系统。
想象一下我们在Ansys中也能轻松做出可以和VC,VB之类主流GUI开发工具媲美的菜单响应效果,Ansys的世界将是多么的亲切、友好。
(2)构建功能繁复的对话框。
Ansys中美观易用的ContactWizard对话框级联界面一定让你印象很深把,有了它,即使是最菜鸟的门外汉也能构建一流的工程算例,Ansys5.7中的DesignSpace应该就是无可争辩的例证之一。虽然从UNIX内核上讲(Windows下的东西是Ansys的后期移植,很多技术还不成熟,这里就不加讨论了),它们多构建在繁复的TCL编程基础上,但我们利用强大的UIDL工具,也能轻松架构起我们自己的实用对话框向导。
(3)建立自己的联机帮助
Ansys中的联机帮助(尤其是UNIX下的搜索引擎)非常实用,可以说是我所接触过许多有限元平台中最为好用的几种帮助平台之一。UNIX下的关键字查询简直是帅呆了,想构建自己完善的帮助系统吗?UIDL同样是这方面不可或缺的理想开发工具。
1.2 结识APDL
APDL即ANSYS参数化设计语言(ANSYS Parametric Design Language),它是一种解释性语言,可用来自动完成一些通用性强的任务,也可以用于根据参数来建立模型。APDL还包括其它许多特性,诸如重复执行某条命令,宏,if-then-else分支,do循环,标量、向量及矩阵操作等。
2 ANSYS二次开发过程及方法
利用这两个强大的工具,并采用模块化编程思想,对石油套筒问题从建立模型、定义材料、网格划分控制,定义边界条件,求解,给出设计建议,编制各自的程序。采用菜单式操作界面,便于用户使用。开发的程序可以完全嵌入到ansys内部使用。并且从模型的建立到求解全部实现参数化。
本计算系统由以下三大模块组成:
A、前处理模块
(1)石油套筒参数化建立模型
(2)有限元模型的形成
(3)材料性质的定义
(4)单元的选择
(5)定义接触
B、求解模块
(1)施加边界条件
(2)施加载荷
(3)施加预紧力
(4)定义安全系数
(5)求解
C、后处理模块
(1)给出等效应力云图
(2)判定结构是否安全,并给予设计建议
(3)其他数据的获得
实现石油套筒建立模型的参数化关键,是根据图纸的模型和尺寸链以独立的几何参数为基础,来实现建立模型。通过改变输入参数的值,就可以直接建立我们所需要的模型。
一旦模型建立好,接下来的工作就比较容易进行。本系统从建立模型到后期处理,只需用户简单的输入参数和点击鼠标即可,操作很简单。
接下来以我开发的转子动力学分析计算模块来说明石油套筒模块的开发过程。
在将来的石油套筒计算模块的开发中,我们也要建立三个这样的模块,并且这三个子模块完全嵌入到ansys的主菜单里。
石油套筒前处理模块中,只需输入几个独立的几何参数,软件在后台会自动计算得到其他参数,并自动建立石油套筒的三维模型。
下面以一个渐开线齿轮的建模过程来说明参数化建立模型的优点:
图2 渐开线齿轮参数建立模型的对话框
图3 渐开线齿轮模型
从上面的小例子可以看出,ansys的参数化建立模型很方便和直观便于用户的操作而无须理解里面复杂的计算,这为本系统得易操作性奠定了坚实的基础。对于接下来的网格划分控制也可以采用对话框输入,根据用户输入的值系统会会自动对模型进行网格划分形成石油套筒的有限元模型。
因为石油套筒结构是一个比较复杂的装配体里面包含大量的接触,如何快速正确的模拟接触成为本系统的一个重点。
模型有卡具与石油管道的接触,卡具与螺栓的接触。在本系统中只需用户选择存在接触的体和定义相关的接触参数如摩擦系数等,本系统会自动在两个体之间形成接触单元。
图4 存在接触的模型
本系统的单元采用8节点实体单元。对于螺栓与卡具的接触采用绑定接触其之间的连接,这样可以简化建立模型的过程,对计算的精度影响也不大。在工程设计中,我们一般都在线弹性范围里进行计算。因此,只需定义材料的弹性模量和珀松比。
对于模型中的衬垫模拟采用ansys的衬垫单元来模拟以提高模型计算的精度。前处理完毕后就进入了求解阶段。在这个模块里重点是方便正确的定义模型边界条件和载荷。边界条件主要就是正确的约束模型的位移;载荷就是管道的内部压力和螺栓的预紧力。管道的压力作用在石油管道的内部,接下来说明如何定义预拉伸载荷。
定义螺栓处的预拉伸
在螺栓和其他结构零件上预加应力常常会给变形和应力带来很大影响。两个ANSYS特征,PRETS179预拉伸单元和PSMESH预拉伸网格命令可以用于这种类型的分析。如果固定件被网格划分为两个独立的部分,使用EINTF命令可以把预拉伸单元插入两块之间。
预拉伸载荷是用来模拟接头固定处的预装配载荷。固定件可以是由任何2D和3D结构,低次或高次实体,梁,壳,管,或联接单元构成。使用PSMESH命令时,施加了预拉伸载荷的预拉伸部分必须定义在固定件内部。(Pre-tension Definition(预拉伸定义)中有螺栓联接的例子)。
使用PSMESH命令
到目前为止,最方便的在固定件上使用预拉伸单元的方法是通过PSMESH命令。只有固定件没被网格分为独立部分时这个命令才可以使用。这个命令将定义预拉伸部分并生成预拉伸单元。它自动把网格化固定件分割为两部分并插入拉伸单元。如果你决定要删除拉伸单元,删除拉伸部分就会自动删除拉伸单元(Main Menu>Preprocessor>Sections>Delete Section)。这个特征也允许你通过合并节点“undo”分割操作。
正常的方向是由PSMESH命令指定的,它是拉伸部分数据的一部分。这里和早先的方法(PTSMESH命令)有些差异,后者用实常值指定正常方向。网格化拉伸部分不一定要是平面,拉伸部分的下面几乎可以是任何形状:线,三角形,四边形,四面体,契形或六面体。可是,在拉伸部分的两面(A 和B)必须有一致的节点。拉伸部分的面和面由一个或多个拉伸单元联接,每个单元对应一对节点。
一个拉伸节点(K)用来控制和监控总的应力载荷。当拉伸部分是由PSMESH命令生成时,拉伸部分的拉伸载荷方向可以相对于面A指定。在一个指定拉伸部分上的所有拉伸单元必须使用同一平面并且有相同的拉伸节点K 。节点K是拉伸单元定义的第三步。
使用EINTF命令如果固定物已被网格分为两个独立部分(例如在现行法定模型中),使用EINTF命令,TOLER,K (Main Menu> Preprocessor>Create>elements> pretension> At Coincident Nodes...)命令可以将拉伸单元 (PRETS179)插入两部分之间。如果K没定义,ANSYS将自动生成。在使用EINTF命令前,单元型ID 和实常值设定必须已完全定义。相连的表面(A 和B)必须有匹配的网格模式和一致的节点。如果一些两面间的节点对与拉伸单元不相连,将会导致后继分析不准确。
工程设计一般采用安全系数,即
本系统中也包含了这一功能,用户只需输入安全系数α和材料的许用应力,系统在后处理模块中会根据用户选择的材料强度理论自动判断此方案是否可行。如果可行,则会输出模型的设计参数值和工况值,用户根据这些值就可以快速设计合适的工具对管道进行快速抢修。如果不可行,用户可以改变设计参数继续计算直到用户满意为止。
综上所述,本系统可以用以下的流程图生动的体现出来:
图6 石油套筒设计模块开发流程图
本系统层次分明便于用户使用,计算快速可靠,可以有效地减小石油管道的抢修时间,有很好的经济效益。相信本系统的成功开发会对石油管道的抢修模式有重大的改变。
|