本文分析了有限元软件二次开发的一般步骤,提出二次开发的基本模型,使用XML 语言表达该模型,并在ANSYS 平台上实现该模型,对一个大型除尘器的仿真模型进行了实例研究.该实例说明使用该模型可方便快速的修改建模参数,提高有限元建模的效率。
|
引言 对现有的有限元计算软件作二次开发是向不熟悉有限元方法和有限元软件使用的工程人员提供利用有限元软件完成有限元建模和计算的一种常用方法。目前,有限元软件二次开发一般是由熟悉某种有限元软件的开发者根据要解决的问题编写一个具体的程序。针对问题的特点,该程序会让用户输入建模计算时需要的参数,然后调用有限元软件完成建模和计算。按照这种方法,对不同的问题,开发者都需要重新编写程序以处理建模计算所需的参数,浪费了大量的人力,也违背了软件重用的原则。 本文通过总结当前有限元软件二次开发的一般步骤,使用XML 语言描述了一个二次开发模型,并对一个大型除尘器的仿真模型进行了实例研究。 1 基于XML 的有限元软件二次开发过程与实现 1.1有限元软件二次开发的一般步骤现有的许多有限元通用计算软件都提供了二次开发的功能,以方便用户在更高的层次上使用软件所提供的功能。ANSYS提供了UPF,APDL,宏和命令流文件(*.log)。用户可以在命令流文件中,使用APDL 编写具有分支,循环结构和变量等高级语言特性的脚本实现参数化建模。此外,用户还可以将一组完成相对独立功能的命令写到宏文件中,然后在命令流文件中调用该宏。MSC.Patran 则提供了PCL(Patran Command Language)语言和会话文件(session file, *.ses)。PCL 语言支持由IF-Then-Else,Switch-case , For 以及While 等关键字组成的循环与控制操作,并提供了对类和函数的支持。会话文件中包含建模命令,也可直接在其中嵌入变量,函数定义等PCL 语句,或调用已编写好的PCL文件,Patran 会话文件管理器会把它不能处理的语句传递给PCL 编译器处理。因此,将会话文件和peL 语言结合起来,通过嵌套调用具有特定功能的会话文件实现参数化建模。 对有限元软件作二次开发一般遵循以下的步骤: 步骤一,在有限元软件的GUI下建立结构模型,得到建模所需的命令流文件或会话文件; 步骤二,修改得到的命令流文件或会话文件,在其中加入变量声明,将可变动的数据用变量替换,如:模型中部件的位置和尺寸,荷载的位置及大小等。这样,通过修改变量的值,就可以实现参数化建模。在此步中,还可以将一组具有完整功能的命令保存到一个单独的宏文件或会话文件中,使整个建模过程更加清晰,也可提高某些模块的重用性。 步骤三,针对要分析的模型的特点和要输入的参数,编写程序让用户输入所需的参数,并用输入的值替换变量,生成一个新的命令流文件。 最后,调用有限元软件完成建模和计算。 在上述的步骤中,前两步与具体模型和所使用的有限元软件相关,很难做到通用,但第三步是可以通用化的,而且本质上是与所使用的软件和系统平台元关。该步骤可以分为三步:获取要变动的参数,提示用户输入变量的值,并用用户输入的值替换命令中的参数。因此,只要找到一种可以描述该步骤的模型,就可以建立二次开发的基本模型。 1.2 XML 实现方法 本文使用XML 语言描述上节所述的基本模型。XML 语言是当前网络数据传输事实上的标准,且具有自解释性和平台元关性。只要定义了文档的结构,就可以不加修改在各平台上使用。 XML文件使用可使用DTD 和Schema 文件描述其文档的整体结构及元素之间的关系。Schema 文件可支持数据类型,名空间,且本身就是XML 文件,而DTD 文件使用的是SGML 语法,相比较而言, Schema 更适合作为语法定义文件,但Schema标准目前还只是草案,DTD 也足以表达本文要描述的模型,故这里使用DTD 文件定义XML 文件的结构。 有限元二次开发模型所使用的DTD 定义如下: 正如上面DTD 定义所表示的,本文使用计算(calculation)的方式组织有限元计算.一个计算用以表示一个完整的有限元分析过程,如对除尘器框架的建摸,划分网格等。它可以包含多个命令集(cmdset)元素.如此,一次有限元分析过程就被划分为多个子模型,且每个子模型都可在执行前作调整。 |
变量元素(variable)用于表示其所属命令集中的参数,本文件为参数选定了两种数据类型,即整型和浮点型,且默认为浮点型。
命令元素(cmd)指定建模所需的命令,可以是有限元软件内置的建模命令,也可以是宏文件,PCL语句和调用会话文件的语句,甚至可以是解析该文件的程序自定义的命令,这可以由实现者灵活控制。命令中可以使用variable 元素定义的变量,实现参数化建模。
为了使建模过程具有可读性,calculation,cmdsel 和variable等元素都具有description 子元素,以描述该元素的功能。calculation和cmdset 的description 子元素描述该计算和命令集用于建立何种模型.variable 的description 元素则描述该变量的含义,若需要包含图表和更详细的文字描述,还可以在descfile 子元素的url属性中指定一个网页或文本文件,对该变量作更进一步的说明。
在每个平台上,二次开发者只需要开发一套解析程序,以处理所有用本DTD 描述的文件,实现参数输入和替换,并生成最后的命令流文件或会话文件调用有限元软件执行指定的有限元操作。
2 有限元二次开发系统的一个实例
这里取在ANSYS 平台上,除尘器框架模型二次开发作为例子。使用本文中提出的方法可以建立开间,进深,斜撑位置及数目,截面类型和材料类型皆可变的除尘器框架模型。只要修改其中定义的变量的值,就可以建立不同形态的模型。如,图l 左图绘出的是开间为6 米,进深为4 米、2 米和4 米的模型,右图则是该模型的应力云图。图2左图则是开间为5米.迸深分别为3米,2米,3米,3米,2米和3米的模型,右图是其应力云图。
3 结论
本文总结了有限元软件二次开发的一般步骤,给出了基本模型,并使用XML 语言绘出了该模型的一个实现。最后,在ANSYS 平台上使用该方法完成了一个除尘器框架的建模。可见,本文所总结的方法是可行的,并可方便快速的修改建模参数,提高有限元建模的效率。
本文作者创新点:使用XML 语言描述了有限元二次开发的一般步骤,提高了用户参数化建模的效率,且该方法是与具体的有限元平台无关的,可方便地移植到其他平台。此外,开发者可以开发一套解析程序为用户提供图形界面,使用户可以更直观地完成建模操作。