有限元语言简介
CAE 软件行业背景
我国 CAE 软件的形成和应用从 20 世纪 70 年代就已开始。近 50 年来,我国在 CAE 理论研究和软件自主开发方面的努力始终没有停止过,也有一些拥有自主知识产权的软件系统脱颖而出,如中科院的飞箭、郑州机械所的紫瑞、大连理工的 JIFEX、中航的 APOLANS、HAJIF 等,均在当时达到一定国际水平,甚至领先水平。上世纪 90 年代以来,开放力度加大,大批国外软件涌入中国市场,加速了 CAE 技术在我国的推广,提高了我国装备制造业的设计水平。与此同时,我国自主开发的软件受到严峻挑战,特别是盗版的国外软件,对我国自主开发的 CAE 软件打击很大,甚至连一些优秀的软件都退出了国内 CAE 市场。作为工业大国,中国不可能长期依赖引进国外的技术和产品。培植自己的 CAE 软件产业,以应用为牵引,提升工业设计软件和仿真分析软件的应用水平,提高产品竞争力和企业核心竞争能力,成为当务之急。
有限元语言
有限元语言(Finite Element Language)是一种专用的有限元模型标记语言,语法简练清晰,广泛地应用于偏微分方程的求解。
发明有限元语言的初衷是为了解决以下两大问题:
- 如何描述各种偏微分方程的表达式,并转化成某种高级语言程序
- 如何描述求解偏微分方程的算法,并转化成某种高级语言程序
经过近三十年的发展,有限元语言已经基本实现了当初的设想。
有限元语言可以使用户以一种类似于数学公式书写和推导的方式,非常自然和简单地表达待解问题的微分方程表达式和算法表达式。采用有限元语言编写程序,开发者的主要工作就是针对不同的表达式,如微分方程的弱形式表达式和算法表达式等,书写脚本文件。有限元语言生成器会自动将脚本解析成某种高级语言(如 Fortran 和 C),编译后即可得到完整的有限元计算程序。有限元语言常用于大规模并行计算和任意多物理场耦合计算程序的开发,是迄今为止数值计算行业中最专业的编程语言之一。
有限元语言分为两部分。一部分用于描述多物理场的偏微分方程(组)表达式。为此,用户需要按照偏微分方程的弱形式表达式填写 PDE 和 FBC 文件,以及用于组织管理的 MDI 文件。偏微分方程表达式支持采用张量形式,非常符合有限元专业人员的习惯。另一部分用于描述求解微分方程的有限元算法,即描述如何将一个非线性的偏微分方程线性化,如何针对时间依赖问题进行时间离散,以及如何控制计算流程和迭代,等等。为此,用户需要填写 NFE 和 GCN 的文件。NFE 文件主要给出离散后线性代数方程组的矩阵和右端项的表达式以及迭代步的控制等内容。GCN 文件给出多物理场采用的算法、耦合方式和有限元计算的流程等。
有限元语言既适用于线性和非线性问题,又适用于稳态和非稳态问题,耦合场的数目可有任意多个,每个场也可有任意多个自由度。因此,可方便地用于求解各种领域和各种学科的任何有限元问题。
同高级语言的对比
有限元语言 | 高级语言 (Fortran, C/C++ 等) | |
---|---|---|
源文件 | 有限元语言脚本文件 | 高级语言源文件 |
编译/翻译器 | FEPG、FEtch 等专用生成器 | 各高级语言厂商提供的专用编译器 |
编译/翻译目标 | 高级语言 Fortran 或 C 源文件, 前处理器(如 GiD)的模板文件, 以及源文件对应的编译连接批命令文件 |
二进制 obj 文件 |
后续操作 | 调用高级语言编译器,进一步地编译链接 | 链接生成二进制可执行程序 |
优势
- 采用有限元语言编程,其代码量比生成器产生的高级语言程序的代码量减少90%以上,因此能极大地提高开发者的编程效率。理解和掌握了有限元语言和自动生成系统之后,你会发现目前需要数月、数年才能编制好的有限元程序,只需数日即可完成;原先令人望而生畏的十分复杂的多场耦合问题,就和求解单场问题一样轻松。
- 采用有限元语言编写和修改有限元程序就像书写和修改有限元表达式那样方便和清晰。由于采用有限元语言编程就是写微分方程表达式和算法,所以源代码更容易阅读、修改和维护。 有限元语言为应用有限元的广大工程师和科技人员免去了繁琐重复的编程劳动。长期以来难以克服的有限元程序的可再用性和可移植性问题,在采用有限元语言的过程中就自然而然地解决了。
生成器
生成器本质上是一种翻译程序,它将有限元语言编写的源代码翻译成已有的高级语言,如 Fortran 和 C。现有的生成器和其对应的目标语言如下:
生成系统 | 目标语言 | 特色 |
---|---|---|
FEtch | Fortran 90 | 支持 Fortran 最新特性,更加灵活高效 |
FEPG pFEPG iFEPG |
Fortran 77 | 长期积累,公式库丰富 |
FELAC ELAB |
C | 提升了并行计算性能 |
未来行业影响
- 有限元语言的普遍采用将促使编制有限元程序的工程师和科学家迅速增加,有限元方法会在各个领域出现前所未有广泛的普及和应用。
- 当前普遍存在的有限元程序编制者与使用者分离的现象将逐渐减少,一个有限元程序的编制和使用将普遍由同一人或同一部分人来完成。
- 目前占主导地位的庞大的有限元程序系统的影响和作用将会逐渐减弱,人们将普遍采用自己编制或专门定制的程序计算有限元问题。
- 大学里老师只教有限元方法不教有限元程序,学生只学方法不编制程序不计算有限元问题的弊病,将因有限元语言的普及而被彻底铲除。
结论
有限元语言把有限元方法与有限元程序融为一体,是未来 CAE 的重要发展方向之一。它比目前的高级语言更高一个层次。用它来编写有限元软件能显著提高效率,并且易于阅读和修改。与绝大多数商软相比,有限元语言所生成的针对具体问题的 CAE 分析工具,不管是实施成本,还是对问题的适应性,都有明显的优势。有限元语言和生成器有望从根本上改变有限元软件技术,把广大工程师和科学家从繁琐、重复的有限元编程劳动中彻底解放出来,并进一步促进有限元法在各个领域的推广和应用。