CN116643734A - 多物理场的机器可执行有限元程序代码的生成方法和系统 - Google Patents

多物理场的机器可执行有限元程序代码的生成方法和系统 Download PDF

Info

Publication number
CN116643734A
CN116643734A CN202310928484.5A CN202310928484A CN116643734A CN 116643734 A CN116643734 A CN 116643734A CN 202310928484 A CN202310928484 A CN 202310928484A CN 116643734 A CN116643734 A CN 116643734A
Authority
CN
China
Prior art keywords
information segment
finite element
information
physical
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310928484.5A
Other languages
English (en)
Inventor
刘韶鹏
肖捷
战志超
康天
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Yunlu Technology Co Ltd
Original Assignee
Beijing Yunlu Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Yunlu Technology Co Ltd filed Critical Beijing Yunlu Technology Co Ltd
Priority to CN202310928484.5A priority Critical patent/CN116643734A/zh
Publication of CN116643734A publication Critical patent/CN116643734A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking

Abstract

本申请涉及一种多物理场的机器可执行有限元程序代码的生成方法和系统。向用户提供有限元符号语言的编写接口,该语言具有面向用户使之容易理解的元素、词法、语法和句法,接收用户经由编写接口编写的六个信息段,以分别定义反映要求解的物理问题中的各物理量之间的关联关系的偏微分方程、物理材料的属性、时域限定条件、网格划分方式、边界条件和控制参数。如此协同构建各种物理问题的求解模型。利用嵌入有限元符号语言的规范的自动化代码解析模块进行解析处理,自动生成机器可执行的有限元程序代码。其能使仿真专业人员以接近公式编写难度的编写体验,灵活编写针对各种物理问题的有限元求解模型,自动高效地生成机器可执行的有限元程序代码。

Description

多物理场的机器可执行有限元程序代码的生成方法和系统
技术领域
本申请涉及多物理场的有限元仿真和建模的技术领域,具体地涉及一种多物理场的机器可执行有限元程序代码的生成方法和系统。
背景技术
工程领域的多物理场通常是指宏观领域的物理场,包括电磁场、流场、力学场、以及热、声、光(光本质上属电磁)学的物理场等等。多物理场仿真是指将客观世界存在的上述各种宏观物理场,通过数学模型建模,计算机程序运行后,得到相应的物理场数值结果。
针对各种实际问题的多物理场仿真计算通常可以分为以下几个步骤。
首先要建立反映实际问题本质的数学模型。比如牛顿型流体流动的数学模型就是著名的纳维-斯托克斯方程及其相应的定解条件。数学模型建立之后,接下来就是求解这个模型。需要寻求高效、高准确度的计算方法。求解科学问题就是求解诸如纳维-斯托克斯方程的偏微分方程。在确定了计算方法后,就可以开始编制程序并进行计算。实践表明这一部分工作是整个工作的主体,会占据整个工程的绝大部分时间。
有限元方法是多物理场仿真计算中采用的主流方法、它最早应用于结构力学,后来随着计算机的发展以及各个学科理论研究的深入,慢慢用于流体力学、电动力学、土力学、热力学等等领域,现在已经成为多物理场仿真计算的主流方法。有限元方法(FEM)的基础是变分原理和加权余量法,其基本求解思想是把计算域划分为有限个互不重叠的单元,在每个单元内,选择一些合适的节点作为求解函数的插值点,将偏微分方程中的变量改写成由各变量或其导数的节点值与所选用的插值函数组成的线性表达式,借助于变分原理或加权余量法,将微分方程离散求解。采用不同的权函数和插值函数形式,便构成不同的有限元方法。
在所有的程序设计语言中,只有机器语言编制的源程序能够被计算机直接理解和执行,用其它程序设计语言编写的程序都必须利用语言处理程序“翻译”成计算机所能识别的机器语言程序。因此,对于多物理场的有限元求解问题,需要生成大量的机器可执行程序代码才能让计算机识别并运行。但是,对于变化且复杂的多物理场的实际问题,仿真专业人员(例如研发人员、物理场分析仿真人员等)理解较为深入,但针对仿真专业人员在代码编写上提出了苛刻的专业要求。例如,可能需要仿真计算平台以及相应的求解器,但市面上大部分求解器都是通用求解器,如果仿真专业人员要获得所需的准确算法模型,则需要对通用求解器进行改进。而这需要仿真专业人员对底层的代码、中间层的算符有充分的理解。而且,最终计算机所能识别的机器语言程序数量极大,由人工编写效率很低。另一方面,对于代码编写专业人员(例如后端程序员)来说,通常只能编写代码求解通用问题,对于多物理场的实际问题的变化且复杂性认识不够,编写的可执行程序代码不能满足实际需求。
发明内容
提供了本申请以解决现有技术中存在的上述问题。
旨在提供一种多物理场的机器可执行有限元程序代码的生成方法和系统,其能够为仿真专业人员提供友好的编写接口,使其能够以接近公式编写难度的直观的编写体验,根据便捷、高效且完整的有限元语言,灵活地编写针对多物理场的实际问题的有限元求解模型,并经由自动化代码解析处理,自动且高效地生成机器可执行的有限元程序代码。
根据本申请的第一方案,提供了一种多物理场的机器可执行有限元程序代码的生成方法。该生成方法包括如下步骤。向用户提供有限元符号语言的编写接口,所述有限元符号语言具有面向用户使之容易理解的元素、词法、语法和句法,所述元素包括六个大类的标题、计算符号、有限元方法域下的预定义变量和常量、以及有限元方法域下的自定义变量和常量,所述词法至少用于定义有限元方法域下的计算函数。接收用户经由所述编写接口编写的第一大类的第一信息段,所述第一信息段定义反映要求解的物理问题中的各物理量之间的关联关系的偏微分方程。接收用户经由所述编写接口编写的第二大类的第二信息段,所述第二信息段定义要求解的物理问题中的物理材料的属性。接收用户经由所述编写接口编写的第三大类的第三信息段,所述第三信息段定义要求解的物理问题的时域限定条件。接收用户经由所述编写接口编写的第四大类的第四信息段,所述第四信息段定义要求解的物理问题的求解物理区域的网格划分方式。接收用户经由所述编写接口编写的第五大类的第五信息段,所述第五信息段定义要求解的物理问题的求解物理区域的边界条件。接收用户经由所述编写接口编写的第六大类的第六信息段,所述第六信息段定义要求解的物理问题的求解过程的控制参数。利用第一信息段到第六信息段,协同构建了各种物理问题的求解模型。接着,基于所述第一大类的第一信息段、第二大类的第二信息段、第三大类的第三信息段、第四大类的第四信息段、第五大类的第五信息段和第六大类的第六信息段,利用嵌入所述有限元符号语言的元素、词法、语法和句法的规范的自动化代码解析模块进行解析处理,自动生成机器可执行的有限元程序代码。
根据本申请的第二方案,提供一种多物理场的机器可执行有限元程序代码的生成系统。所述生成系统包括第一处理器和多个第二处理器。所述第一处理器配置为:执行根据本申请各个实施例的多物理场的机器可执行有限元程序代码的生成方法。所述多个第二处理器与所述第一处理器通信连接,且配置为用并行方式执行所述自动化代码解析模块对所述第一信息段、第二信息段、第三信息段、第四信息段、第五信息段和第六信息段的解析处理。
利用根据本申请各个实施例的多物理场的机器可执行有限元程序代码的生成方法和系统,提供了面向仿真专业人员使之容易理解的理解难度与理解物理公式相当的有限元符号语言及其编写接口,使得仿真专业人员可以遵循在实际求解有限元问题的思考方式,通过在第一信息段到第六信息段中依序编写反映要求解的物理问题中的各物理量之间的关联关系的偏微分方程、物理材料的属性、时域限定条件、网格划分方式、边界条件和控制参数,这些信息段可以协同构建有限元求解模型,并通过自动化代码解析模块进行解析处理,自动生成机器可执行的有限元程序代码,显著降低了仿真专业人员开发算法模型代码的门槛,提升了仿真专业人员的工作效率,能够将更多的精力聚焦于针对多变且复杂的物理问题的有限元求解模型上。
附图说明
在不一定按比例绘制的附图中,相同的附图标记可以在不同的视图中描述相似的部件。附图大体上通过举例而不是限制的方式示出各种实施例,并且与说明书以及权利要求书一起用于对所公开的实施例进行说明。这样的实施例是例证性的,而并非旨在作为本装置或方法的穷尽或排他实施例。
图1示出根据本申请实施例的多物理场的机器可执行有限元程序代码的生成方法的流程图。
图2(a)示出根据本申请实施例的编写接口的第一示例的界面示意图。
图2(b)示出根据本申请实施例的编写接口的第二示例的界面示意图。
图2(c)示出根据本申请实施例的编写接口的第三示例的界面示意图。
图2(d)示出根据本申请实施例的编写接口的第四示例的界面示意图。
图2(e)示出根据本申请实施例的编写接口的第五示例的界面示意图。
图2(f)示出根据本申请实施例的编写接口的第六示例的界面示意图。
图3示出根据本申请实施例的自动生成机器可执行的有限元程序代码的流程图。
图4示出根据本申请实施例的多物理场的机器可执行有限元程序代码的生成系统的框架图。
具体实施方式
为使本领域技术人员更好的理解本申请的技术方案,下面结合附图和具体实施方式对本申请作详细说明。下面结合附图和具体实施例对本申请的实施例作进一步详细描述,但不作为对本申请的限定。
本申请中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分。“包括”或者“包含”等类似的词语意指在该词前的要素涵盖在该词后列举的要素,并不排除也涵盖其他要素的可能。本申请中使用的“A以上”包含A及比A大的数,使用的“B以下”不包含B而仅包含比B小的数。本申请中结合附图所描述的方法中各个步骤的执行顺序并不作为限定。只要不影响各个步骤之间的逻辑关系,可以将数个步骤整合为单个步骤,可以将单个步骤分解为多个步骤,也可以按照具体需求调换各个步骤的执行次序。
图1示出根据本申请实施例的一种多物理场的机器可执行有限元程序代码的生成方法。本申请所谓的“多物理场”表示各种物理场,包括但不限于电磁场、流场、力学场、以及热、声、光(光本质上属电磁)学的物理场中任何一种或数种,该方法生成的机器可执行有限元程序代码可以针对各种物理场,例如一种或数种物理场,求解复杂多变的实际物理问题。
所谓的机器可执行有限元程序代码,是一种以有限元方法来求解多物理场的实际物理问题的计算机能够接受和处理的、具有一定语法规则的语言,其可以是高级语言(比如Fortran、Python、C++、Java等任何一种)、也可以是底层的汇编语言,在此不做具体限定。对于作为用户的仿真专业人员来说,机器可执行有限元程序代码与其熟悉的物理建模公式存在比较大的差异,将两者进行相互转换需要精通各种机器可执行语言,即便对通用求解器进行一些改进,也需要仿真专业人员对底层的代码、中间层的算符有充分的理解。
本申请引入了有限元符号语言,其将仿真专业人员熟悉的物理建模公式与抽象的底层代码及中间层的算符(也就是计算机可执行代码)关联起来,仿真人员利用其的编写体验舒适,几乎接近公式编写难度,语言简要易懂,使得工作负荷显著减轻。此外,本申请中的有限元符号语言并非针对有限元求解的单个处理阶段的薄弱的有限元符号语言,而是具有面向用户使之容易理解的元素、词法、语法和句法的综合性的有限元符号语言。所述元素包括六个大类的标题、计算符号、有限元方法域下的预定义变量和常量、以及有限元方法域下的自定义变量和常量,所述词法至少用于定义有限元方法域下的计算函数。
如图1所示,在步骤101,向用户提供所述有限元符号语言的编写接口。
在步骤102,接收用户经由所述编写接口编写的第一大类的第一信息段,所述第一信息段定义反映要求解的物理问题中的各物理量之间的关联关系的偏微分方程。
在步骤102,还接收用户经由所述编写接口编写的第二大类的第二信息段,所述第二信息段定义要求解的物理问题中的物理材料的属性。
在步骤102,还接收用户经由所述编写接口编写的第三大类的第三信息段,所述第三信息段定义要求解的物理问题的时域限定条件。
在步骤102,还接收用户经由所述编写接口编写的第四大类的第四信息段,所述第四信息段定义要求解的物理问题的求解物理区域的网格划分方式。
在步骤102,还接收用户经由所述编写接口编写的第五大类的第五信息段,所述第五信息段定义要求解的物理问题的求解物理区域的边界条件。
在步骤102,还接收用户经由所述编写接口编写的第六大类的第六信息段,所述第六信息段定义要求解的物理问题的求解过程的控制参数。
通过提供具有这样元素、词法、语法和句法的综合性的有限元符号语言的用户友好的编写接口,使得仿真专业人员可以遵循在实际求解有限元问题的思考方式,通过在第一信息段到第六信息段中依序编写反映要求解的物理问题中的各物理量之间的关联关系的偏微分方程、物理材料的属性、时域限定条件、网格划分方式、边界条件和控制参数,这些信息段可以协同构建有限元求解模型。
在步骤102中,让仿真专业人员分别编写六个大类的信息段,去分别定义反映要求解的物理问题中的各物理量之间的关联关系的偏微分方程、要求解的物理问题中的物理材料的属性、要求解的物理问题的时域限定条件、要求解的物理问题的求解物理区域的网格划分方式、要求解的物理问题的求解物理区域的边界条件和要求解的物理问题的求解过程的控制参数,符合仿真专业人员在实际求解有限元问题的思考方式。如此,仿真专业人员可以将更多的精力聚焦于针对多变且复杂的物理问题的有限元求解模型上,有了求解的方案,就可以通过6个信息段的有限元符号语言的高效编写来转化为代码产品的前体,即有限元符号语言描述的有限元求解模型。
下面对仿真专业人员在实际求解有限元问题(也就是以有限元原理来求解各种物理场的复杂物理问题)的思考方式进行详细说明。
以有限元原理来求解各种物理场的复杂物理问题,是用较简单的问题代替复杂问题后再求解。具体说来,通过将求解域看成是由许多称为有限元的小的互连子域组成,对每一单元假定一个合适的(较简单的)近似解,然后推导求解这个域总的满足条件(如结构的平衡条件),从而得到问题的解。
对于不同物理性质和数学模型的问题,有限元求解法的基本步骤是相同的,只是具体公式推导和运算求解不同。仿真专业人员在求解有限元问题的思考方式和基本步骤通常如下。
第一步进行物理问题及求解域定义,也就是根据实际的物理问题近似确定求解域的物理性质和几何区域,包括但不限于涉及物理材料的属性,以及物理区域的边界条件等。
第二步进行求解域的离散化。可以将求解域近似为具有不同有限大小和形状且彼此相连的有限个单元组成的离散域,习惯上称为有限元网络划分。显然单元越小(网络越细)则离散域的近似程度越好,计算结果也越精确,但计算量及误差都将增大,因此求解域的离散化是有限元法的核心技术之一。对于时变的物理场来说,离散化还包括时间长的离散化,比如仿真时间步长等。
第三步则确定状态变量及控制方法。一个具体的物理问题通常可以用一组包含问题状态变量边界条件的微分方程式表示,为适合有限元求解,通常将微分方程化为等价的泛函形式。
第四步是单元推导,也就是对单元构造一个适合的近似解,即推导有限单元的列式,其中包括选择合理的单元坐标系,建立单元试函数,以某种方法给出单元各状态变量的离散关系,从而形成单元矩阵(结构力学中称刚度阵或柔度阵)。为保证问题求解的收敛性,单元推导有许多原则要遵循。对工程应用而言,重要的是应注意每一种单元的解题性能与约束。例如,单元形状应以规则为好,畸形时不仅精度低,而且有缺秩的危险,将导致无法求解。
第五步为总装求解,即将单元总装形成离散域的总矩阵方程(联合方程组),反映对近似求解域的离散域的要求,即单元函数的连续性要满足一定的连续条件。总装是在相邻单元结点进行,状态变量及其导数(可能的话)连续性建立在结点处。
第六步是联立方程组求解和结果评估,有限元法最终导致联立方程组。联立方程组的求解可用直接法、选代法和随机法。求解结果是单元结点处状态变量的近似值。对于计算结果的质量,将通过与设计准则提供的允许值比较来评价并确定是否需要重复计算。
如果仿真专业人员弄清了第一步到第六步的求解细节,就可以通过编写第一信息段到第六信息段来予以高效贯彻。具体说来,例如,第一步中确定的物理材料的属性可以通过编写第二信息段来贯彻,第一步中确定的物理区域的边界条件可以通过编写第五信息段来贯彻,第二步中确定的网格划分可以通过第四信息段来贯彻,第三步中确定的物理方程(通常采用偏微分方程的形式)可以通过编写第一信息段来贯彻,第三步中确定的求解过程的及控制方法以及第六步中的方程组求解方法等可以通过编写第六信息段来贯彻,也就是说,通过第一到第六信息段的编写,不仅构建了有限元求解模型,还给出了该如何求解。
接着在步骤103,基于所述第一大类的第一信息段、第二大类的第二信息段、第三大类的第三信息段、第四大类的第四信息段、第五大类的第五信息段和第六大类的第六信息段,利用嵌入所述有限元符号语言的元素、词法、语法和句法的规范的自动化代码解析模块进行解析处理,自动生成机器可执行的有限元程序代码。也就是说,通过第一到第六信息段的编写,不仅构建了有限元求解模型,还给出了该如何求解,如本申请那样形成了机器可执行的有限元程序代码,就可以使得处理器在第一到第六信息段的引导下,自动执行从第四步到第六步的整个求解过程。有限元符号语言的规范为自动化代码解析模块所知,因此其可以高效自动生成大量的机器可执行的有限元程序代码。只要仿真专业人员遵照有限元符号语言的规范完成六个信息段的编写,例如通过规范的机器核对和编译,那么后续就由至少一个处理器自动转换“翻译”成大量的机器可执行的有限元程序代码。
如此,提供了面向仿真专业人员使之容易理解的理解难度与理解物理公式相当的有限元符号语言及其编写接口,使得仿真专业人员可以遵循在实际求解有限元问题的思考方式,通过在第一信息段到第六信息段中依序编写反映要求解的物理问题中的各物理量之间的关联关系的偏微分方程、物理材料的属性、时域限定条件、网格划分方式、边界条件和控制参数,这些信息段可以协同构建有限元求解模型,并通过自动化代码解析模块进行解析处理,自动生成机器可执行的有限元程序代码,显著降低了仿真专业人员开发算法模型代码的门槛,提升了仿真专业人员的工作效率,能够将更多的精力聚焦于针对多变且复杂的物理问题的有限元求解模型上。
自动化代码解析模块嵌入所述有限元符号语言的元素、词法、语法和句法的规范,可以对第一到第六信息段进行解析处理,来自动生成机器可执行的有限元程序代码。基于有限元符号语言进行解析处理来自动生成机器可执行的有限元程序代码可以采用多种实现方式。例如,可以通过按照有限元符号语言的规范,解读词法、句法、语义再构建语法树,采用诸如Comsol、FEPG和OPENFOAM中的任何一种软件系统的解析方式进行解析,以自动生成计算单元刚度矩阵、单元质量矩阵、单元阻尼矩阵和单元载荷向量等单元子程序,从而自动生成机器可执行的有限元程序代码。
图2(a)示出根据本申请实施例的编写接口的第一示例的界面示意图。如图2(a)所示,
向用户提供有限元符号语言的编写接口具体包括如下步骤。向用户提供编写界面,且在所述编写界面上呈现各个大类的标签,例如编写界面左上角的标签“物理方程”、“材料属性”、“时域限定条件”、“网格划分”、“边界条件”、“控制参数”,和对应大类的信息段的编辑框,例如编写界面中L型的编辑框。响应于用户对各个标签的点击或选中操作,切换显示对应大类的编辑框。
具体说来,如果用户点击或选中“物理方程”,则显示第一大类的编辑框,如图2(a)所示。如果用户点击或选中“材料属性”,则显示第二大类的编辑框,如图2(b)所示。如果用户点击或选中“时域限定条件”,则显示第三大类的编辑框,如图2(c)所示。如果用户点击或选中“网格划分”,则显示第四大类的编辑框,如图2(d)所示。如果用户点击或选中“边界条件”,则显示第五大类的编辑框,如图2(e)所示。如果用户点击或选中“控制参数”,则显示第六大类的编辑框,如图2(f)所示。
图2(a)-图2(f)的界面仅仅作为示例,也可以分别同时显示各个标签的对应编辑框,仅仅在某个标签被点击或选中时激活对应编辑框使用户可以在其中输入信息段。
转到图2(a),以第一大类-“物理方程”为例,向用户提供有限元符号语言的编写接口进一步包括:在所显示的对应大类的编辑框中,依序呈现大类的标题和冒号,也就是EQUATION:,以左大括号为信息段的开头且以右大括号为信息段的结束,以分号作为信息句的结束。
如图2(a)所示,针对热的对流和扩展的物理问题,表征其的物理方程如公式(1)所示:
; 公式(1)
其中,T表示温度,t表示时间,den表示流体的密度,u表示压力,▽T表示求T的梯度,a表示对流项的常量,▽()表示求散度。
则用户可以在第一大类的编辑框中,编写如下的第一信息段来定义以上物理方程:
EQUATION:
{
phi=denU/>T;
fem::ddt(T)+ fem::div(phi)=&
fem::div(a, grad(T));
};\\ \a代表对流项的常量/>/
其中,T表示温度,t表示时间,den表示流体的密度,u表示压力,grad(T)表示求T的梯度,a表示对流项的常量,div()表示求散度,ddt()表示求相对于时间的偏微分。
在本申请的一些实施例中,所述计算符号可以包括除法运算符、乘法运算符、加法运算符、等号和比较运算符,且每个计算符号都与键盘上的对应运算符相同。如上的第一信息段中,冒号、等号、乘法运算符、加法运算符和括号都与键盘上的对应符号相同,也就是说,用户在编写信息段时,无需启用额外的编辑器,且信息段与物理方程的公式非常接近,编写难度与编写公式接近,大大减轻了用户的工作负荷。其中,dtt()、div()、grad()都是有限元方法域下的计算函数,以fem::来表示后面跟着的计算函数是有限元方法域下的,且可以由有限元符号语言的词法来定义。在一些实施例中,利用计算的英文术语的缩写来定义计算函数,例如div是divergence(散度的英文)的缩写,grad是gradient(梯度的英文)的缩写,使得计算函数更容易被仿真专业人员理解和调用。
在一些实施例中,所述有限元符号语言的句法定义续行符号、注释符号、注释开始符号和注释结束符号。例如,所述续行符号提示下一行为本行的续行,在信息段的句太长时可以使用续行符号,例如以上第一信息段中的&,在&后换行继续编写同个句中的后续内容。所述注释符号提示其后的行作为注释行,注释开始符号提示注释的开始而注释结束符号提示一行或数行注释的结束,例如,在以上的第一信息段中,\\为注释符号,\用作注释开始符号,而/>/用作注释结束符号,便于用户对编写的信息段进行注释说明。
以上参考第一大类的编辑框中的第一信息段说明的实现方式也可以类似地应用于第二大类到第六大类的第二信息段到第六信息段的编写,下面分别进行说明。
参见图2(b),用户可以在第二大类的编辑框中,编写如下的第二信息段来定义材料属性:
MATERIAL:
{
m1:2.5e-7;
m2:1.0e-6;
m3:0.0;
m4:0.0;
}
大类的标题MATERIAL代表这是材料属性的编辑部分,该部分通过自定义材料名称、缺省值等实现对材料属性的定义,其中,m1、m2、m3和m4定义了四个材料属性参数,例如可以是材料的热传导率、密度、弹性模量、电导率等,可根据需要计算的物理场景进行设置,其缺省值可以分别定义为2.5×10-7、1.0×10-6、0.0 和 0.0。
参见图2(c),用户可以在第三大类的编辑框中,编写如下的第三信息段来定义时域限定条件:
TSCHEME:
{
starttime0;
endtime0.0001;
deltatime5e-07;
}
大类的标题TSCHEME代表这是时域限定条件的编辑部分,例如可以代表仿真的时间离散设置,可以通过定义时间步长deltatime以及求解问题的起始时间starttime和结束时间endtime,来限定物理问题的时间求解范围。
参见图2(d),用户可以在第四大类的编辑框中,编写如下的第四信息段来定义网格划分方式:
MESH:
{
vertices
(
(0 -1 0) (20 -1 0)(20 1 0)
(0 1 0) (0 -1 0.1) (20 -1 0.1)
(20 1 0.1) (0 1 0.1)
);
blocks
(
hex (0 1 2 3 4 5 6 7) (100 40 1) simpleGrading (1 1 1)
);
edges
(
arc 0 5 (0.469846 0.17101 -0.5)
);
}
其中,大类的标题MESH代表这是网格划分方式的编辑部分,可以用vertices定义顶点信息,用blocks定义求解空间区域,用edges表示求解空间区域的边。其中,Vertices中每一个括号内为点的三维坐标(xyz);blocks中选择的是六面体或者其他立体单元,本文中采用的是六面体,以及对应的八个顶点。用hex定义形成六面体,分别在对六面体的三个维度进行插值,插值的点数为后面括号内的数值,例如本文中使用的是(100 40 1),即为在x方向网格数目为100个,y方向网格数目为40个,Z方向1个。simpleGrading(1 1 1)为采用简单1阶线性插值。Edges选择边,采用圆弧arc,从定点0号到5号,经过点(0.469846 0.17101-0.5)。在一些实施例中,所述网格划分方式包括求解区域的范围、网格节点坐标、网格节点关系、求解区域的边缘信息和面信息。
参见图2(e),用户可以在第五大类的编辑框中,编写如下的第五信息段来定义边界条件:
BOUNDARY:
{
inlet
{
type1; \\ \第一类边界条件/>/
phi100; \\ \物理场初始值为100/>/
faces
( (0 4 7 3) )
}
}
其中,大类的标题BOUNDARY代表这是边界条件的编辑部分。以入口(inlet)的边界条件为例,以上的第五信息段定义了入口处的边界条件为第一类边界条件,且边界处的物理场的初始值为100,其中,该入口为入口面,入口面则由14的数组(0, 4, 7, 3)来定义。
在一些实施例中,所述边界条件包括第一类边界条件、第二类边界条件和第三类边界条件。
参见图2(f),用户可以在第六大类的编辑框中,编写如下的第六信息段来定义控制参数:
CONTROL:
{
solver G-S;\\\高斯赛德尔迭代/>/
tolerance 1e-06;\\\残差最大值为1e-06/>/
div(phi,U) upwind-1;\\\对物理场phi和U的空间离散方式为迎风一阶格式/>/
}
其中,大类的标题CONTROL代表这是控制参数的编辑部分,可以编写定义求解有限元问题的控制参数,包括迭代求解方法、残差约束条件、空间离散方式(例如差分求解方式)等中的任何一种。以以上的第六信息段为例,其定义了使用高斯赛德尔迭代,残差最大值为1e-06,且对物理场phi和U的运算的空间离散方式为迎风一阶格式。
在一些实施例中,允许用户在所述第一信息段、第二信息段、第三信息段、第四信息段、第五信息段和第六信息段中的部分信息段内插入自己编写的其他常规语言例如Fortran的源程序。例如,以“FROTRAN:{}”字符引导的方式在指定的某些信息段内插入,例如,Fortran程序符合Fortran95以上的语法规则。如此,用户可以将求解模型的某些模块(例如频繁的运算模块)的机器可执行的有限元程序代码存储为积木,在信息段内按需插入,而以“FROTRAN:{}”字符引导,可以后续让解析模块识别出该{}内的程序代码已经是机器可执行的,无需解析,直接复制调用即可。
可以看到,仿真专业人员可以使用容易理解的有限元符号语言,遵循在实际求解有限元问题的思考方式,以与物理公式相当的信息编写便利性,在第一信息段到第六信息段中依序编写反映要求解的物理问题中的各物理量之间的关联关系的偏微分方程、物理材料的属性、时域限定条件、网格划分方式、边界条件和控制参数,来方便且高效地贯彻各种不同的具体物理问题的有限元求解模型,以便利用嵌入所述有限元符号语言的元素、词法、语法和句法的规范的自动化代码解析模块进行解析处理,自动生成机器可执行的有限元程序代码。
在一些实施例中,所述生成方法还包括:响应于用户完成所有大类的信息段的编辑的确认操作,启用核查处理。如果核查结果是元素、词法、语法和句法的用法上存在问题,则向用户提示问题并使得问题存在的信息段恢复到可编辑状态;如果核查结果是元素、词法、语法和句法的用法上没有问题,则启用所述自动化代码解析模块的解析处理。如此,可以避免在存在问题的信息段上浪费有限的解析资源,而且对六个信息段进行核查时,对于用户来说,错误的识别和定位更为直观和高效,可读性也更强。
图3示出根据本申请实施例的自动生成机器可执行的有限元程序代码的流程图。如图3所示,自动化代码解析模块的解析处理具体包括如下步骤。
首先,启用有限元语法解析系统(或者有限元语法解析模块)。在步骤301,对所述第一信息段、第二信息段、第三信息段、第四信息段、第五信息段和第六信息段,进行词法分析。例如,第一信息段中使用了哪些运算符号,运算符号对哪些变量和常量进行运算。
在步骤302,基于词法分析的结果,对所述第一信息段、第二信息段、第三信息段、第四信息段、第五信息段和第六信息段进行句法分析。例如,第一信息段都包含什么样的句子,每个句子中定义了针对哪些变量和常量的运算的组合。
在步骤303,基于所述词法分析和句法分析的结果,对所述第一信息段、第二信息段、第三信息段、第四信息段、第五信息段和第六信息段进行语义分析。
在步骤304,基于语义分析的结果,构建抽象语法树。
在步骤305,基于所构建的抽象语法树,自动生成机器可执行的有限元程序代码,也就是自动生成各类单元计算程序源代码,使得计算程序可执行代码可被调用进行计算(步骤306)。
自动化代码解析模块嵌入了所述有限元符号语言的元素、词法、语法和句法的规范,因此可以方便地执行词法分析、句法分析、语义分析,构建抽象语法树,并自动将其翻译为目标语言(例如C++、Fortran等)的机器可执行的有限元程序代码。进行语义分析、构建抽象语法树并生成目标语言的机器可执行的有限元程序代码,可以采用各种方式来实现,诸如Comsol、FEPG和OPENFOAM中的任何一种软件系统的解析方式所采用的方式。
在一些实施例中,所述第一大类的第一信息段、第二大类的第二信息段、第三大类的第三信息段、第四大类的第四信息段、第五大类的第五信息段和第六大类的第六信息段的信息量可以控制在几百行代码以内。不仅用户的信息编写负荷大大减轻,且仅需少量的本地存储就足够存储仿真专业人员对各种物理问题进行有限元建模的六段信息段。
在一些实施例中,自动化代码解析模块的解析处理具体包括:将所述自动化代码解析模块的指令分发到多个处理器,以利用所述多个处理器用并行方式执行所述解析处理。例如,利用总计几百行代码的六段信息段,可以实现有限元程序的并行化程序代码的自动生成,计算规模可达万核以上的并行能力。
如图4所示,多物理场的机器可执行有限元程序代码的生成系统包括第一处理器401以及与与所述第一处理器401通信连接的多个第二处理器402。所述第一处理器401配置为:接收用户经由所述编写接口编写的第一大类的第一信息段,所述第一信息段定义反映要求解的物理问题中的各物理量之间的关联关系的偏微分方程;接收用户经由所述编写接口编写的第二大类的第二信息段,所述第二信息段定义要求解的物理问题中的物理材料的属性;接收用户经由所述编写接口编写的第三大类的第三信息段,所述第三信息段定义要求解的物理问题的时域限定条件;接收用户经由所述编写接口编写的第四大类的第四信息段,所述第四信息段定义要求解的物理问题的求解物理区域的网格划分方式;接收用户经由所述编写接口编写的第五大类的第五信息段,所述第五信息段定义要求解的物理问题的求解物理区域的边界条件;接收用户经由所述编写接口编写的第六大类的第六信息段,所述第六信息段定义要求解的物理问题的求解过程的控制参数。
所述多个第二处理器402配置为用并行方式, 基于所述第一大类的第一信息段、第二大类的第二信息段、第三大类的第三信息段、第四大类的第四信息段、第五大类的第五信息段和第六大类的第六信息段,利用嵌入所述有限元符号语言的元素、词法、语法和句法的规范的自动化代码解析模块进行解析处理,自动生成可并行处理的机器可执行的有限元程序代码。
也就是说,该系统中,第一处理器401可以驻留于本地的存储器的存储容量和计算能力都不高的用户终端,例如普通的台式电脑、膝上型PC,甚至移动终端,只要可以接收用户编写的信息段并进行存储即可。而所编写的信息段可以传送到并行运行的多个第二处理器402,以并行方式高效且迅速地进行解析。也就是说,快捷的信息段的编写和相对耗时的解析处理可以异地处理,以确保用户在任何场景下都可以方便地将各种物理问题的求解方案转换为有限元符号语言予以存储下来,再传输到并行机进行高效的转换和“翻译”,以自动生成可并行处理的机器可执行的有限元程序代码。
本申请中的处理器可以是包括一个以上通用处理设备的处理设备,诸如微处理器、中央处理单元(CPU)、图形处理单元(GPU)等。更具体地,该处理器可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、运行其他指令集的处理器或运行指令集的组合的处理器。该处理器还可以是一个以上专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、片上系统(SoC)等。处理器可以通信地耦合到存储器并且被配置为执行存储在其上的计算机可执行指令。
此外,尽管已经在本文中描述了示例性实施例,其范围包括任何和所有基于本申请的具有等同元件、修改、省略、组合(例如,各种实施例交叉的方案)、改编或改变的实施例。权利要求书中的元件将被基于权利要求中采用的语言宽泛地解释,并不限于在本说明书中或本申请的实施期间所描述的示例,其示例将被解释为非排他性的。因此,本说明书和示例旨在仅被认为是示例,真正的范围和精神由以下权利要求以及其等同物的全部范围所指示。
以上描述旨在是说明性的而不是限制性的。例如,上述示例(或其一个或更多方案)可以彼此组合使用。例如本领域普通技术人员在阅读上述描述时可以使用其它实施例。另外,在上述具体实施方式中,各种特征可以被分组在一起以简单化本申请。这不应解释为一种不要求保护的公开的特征对于任一权利要求是必要的意图。相反,本申请的主题可以少于特定的公开的实施例的全部特征。从而,以下权利要求书作为示例或实施例在此并入具体实施方式中,其中每个权利要求独立地作为单独的实施例,并且考虑这些实施例可以以各种组合或排列彼此组合。本发明的范围应参照所附权利要求以及这些权利要求赋权的等同形式的全部范围来确定。
以上实施例仅为本申请的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本申请的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

Claims (10)

1.一种多物理场的机器可执行有限元程序代码的生成方法,其特征在于,包括:
向用户提供有限元符号语言的编写接口,所述有限元符号语言具有面向用户使之容易理解的元素、词法、语法和句法,所述元素包括六个大类的标题、计算符号、有限元方法域下的预定义变量和常量、以及有限元方法域下的自定义变量和常量,所述词法至少用于定义有限元方法域下的计算函数;
接收用户经由所述编写接口编写的第一大类的第一信息段,所述第一信息段定义反映要求解的物理问题中的各物理量之间的关联关系的偏微分方程;
接收用户经由所述编写接口编写的第二大类的第二信息段,所述第二信息段定义要求解的物理问题中的物理材料的属性;
接收用户经由所述编写接口编写的第三大类的第三信息段,所述第三信息段定义要求解的物理问题的时域限定条件;
接收用户经由所述编写接口编写的第四大类的第四信息段,所述第四信息段定义要求解的物理问题的求解物理区域的网格划分方式;
接收用户经由所述编写接口编写的第五大类的第五信息段,所述第五信息段定义要求解的物理问题的求解物理区域的边界条件;
接收用户经由所述编写接口编写的第六大类的第六信息段,所述第六信息段定义要求解的物理问题的求解过程的控制参数;
基于所述第一大类的第一信息段、第二大类的第二信息段、第三大类的第三信息段、第四大类的第四信息段、第五大类的第五信息段和第六大类的第六信息段,利用嵌入所述有限元符号语言的元素、词法、语法和句法的规范的自动化代码解析模块进行解析处理,自动生成机器可执行的有限元程序代码。
2.根据权利要求1所述的生成方法,其特征在于,向用户提供有限元符号语言的编写接口具体包括:
向用户提供编写界面,且在所述编写界面上呈现各个大类的标签和对应大类的信息段的编辑框;
响应于用户对各个标签的点击或选中操作,切换显示对应大类的编辑框。
3.根据权利要求2所述的生成方法,其特征在于,向用户提供有限元符号语言的编写接口进一步包括:在所显示的对应大类的编辑框中,依序呈现大类的标题和冒号,以左大括号为信息段的开头且以右大括号为信息段的结束,以分号作为信息句的结束,
所述有限元符号语言的句法定义续行符号、注释符号、注释开始符号和注释结束符号,所述续行符号提示下一行为本行的续行,所述注释符号提示其后的行作为注释行,注释开始符号提示注释的开始而注释结束符号提示一行或数行注释的结束,
其中,所述计算符号包括除法运算符、乘法运算符、加法运算符、等号和比较运算符,且每个计算符号都与键盘上的对应运算符相同。
4.根据权利要求2所述的生成方法,其特征在于,所述生成方法还包括:
响应于用户完成所有大类的信息段的编辑的确认操作,启用核查处理,
如果核查结果是元素、词法、语法和句法的用法上存在问题,则向用户提示问题并使得问题存在的信息段恢复到可编辑状态;
如果核查结果是元素、词法、语法和句法的用法上没有问题,则启用所述自动化代码解析模块的解析处理。
5.根据权利要求1所述的生成方法,其特征在于,自动化代码解析模块的解析处理具体包括:
将所述自动化代码解析模块的指令分发到多个处理器,以利用所述多个处理器用并行方式执行所述解析处理。
6.根据权利要求5所述的生成方法,其特征在于,所述第一大类的第一信息段、第二大类的第二信息段、第三大类的第三信息段、第四大类的第四信息段、第五大类的第五信息段和第六大类的第六信息段的信息量为总计几百行代码以内。
7.根据权利要求1所述的生成方法,其特征在于,自动化代码解析模块的解析处理具体包括:
对所述第一信息段、第二信息段、第三信息段、第四信息段、第五信息段和第六信息段,进行词法分析;
基于词法分析的结果,对所述第一信息段、第二信息段、第三信息段、第四信息段、第五信息段和第六信息段进行句法分析;
基于所述词法分析和句法分析的结果,对所述第一信息段、第二信息段、第三信息段、第四信息段、第五信息段和第六信息段进行语义分析;
基于语义分析的结果,构建抽象语法树;以及
基于所构建的抽象语法树,自动生成机器可执行的有限元程序代码。
8.根据权利要求1所述的生成方法,其特征在于,
所述时域限定条件包括有限元求解的时间步长、求解开始时间和求解结束时间,所述网格划分方式包括求解区域的范围、网格节点坐标、网格节点关系、求解区域的边缘信息和面信息,
所述边界条件包括第一类边界条件、第二类边界条件和第三类边界条件,
所述控制参数包括求解过程的迭代求解方法、残差约束条件和物理场的运算的空间离散方式。
9.根据权利要求1所述的生成方法,其特征在于,还包括:
允许用户在所述第一信息段、第二信息段、第三信息段、第四信息段、第五信息段和第六信息段中的部分信息段内插入自己编写的其他常规语言的源程序。
10.一种多物理场的机器可执行有限元程序代码的生成系统,其特征在于,包括第一处理器,其配置为:执行根据权利要求1-9中任何一项所述的多物理场的机器可执行有限元程序代码的生成方法;以及
与所述第一处理器通信连接的多个第二处理器,其配置为用并行方式执行所述自动化代码解析模块对所述第一信息段、第二信息段、第三信息段、第四信息段、第五信息段和第六信息段的解析处理。
CN202310928484.5A 2023-07-27 2023-07-27 多物理场的机器可执行有限元程序代码的生成方法和系统 Pending CN116643734A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310928484.5A CN116643734A (zh) 2023-07-27 2023-07-27 多物理场的机器可执行有限元程序代码的生成方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310928484.5A CN116643734A (zh) 2023-07-27 2023-07-27 多物理场的机器可执行有限元程序代码的生成方法和系统

Publications (1)

Publication Number Publication Date
CN116643734A true CN116643734A (zh) 2023-08-25

Family

ID=87619280

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310928484.5A Pending CN116643734A (zh) 2023-07-27 2023-07-27 多物理场的机器可执行有限元程序代码的生成方法和系统

Country Status (1)

Country Link
CN (1) CN116643734A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541614A (zh) * 2011-12-31 2012-07-04 南京师范大学 基于代码分析的计算模块输入输出数据自动解析方法
CN104919459A (zh) * 2012-12-20 2015-09-16 科姆索公司 创建用于多物理场建模的可重复使用的几何序列的系统及方法
CN107423516A (zh) * 2017-08-01 2017-12-01 元计算(天津)科技发展有限公司 一种基于有限元语言的编码方法、编译器及求解方法
CN111767055A (zh) * 2020-06-16 2020-10-13 合肥本源量子计算科技有限责任公司 一种量子程序的编译方法及装置
CN113221422A (zh) * 2021-05-18 2021-08-06 上海西陆信息科技有限公司 基于非线性流体数据信息处理技术的流体仿真模拟方法
CN113657064A (zh) * 2021-08-20 2021-11-16 华中科技大学 一种功率半导体模块多物理场联合仿真方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541614A (zh) * 2011-12-31 2012-07-04 南京师范大学 基于代码分析的计算模块输入输出数据自动解析方法
CN104919459A (zh) * 2012-12-20 2015-09-16 科姆索公司 创建用于多物理场建模的可重复使用的几何序列的系统及方法
CN107423516A (zh) * 2017-08-01 2017-12-01 元计算(天津)科技发展有限公司 一种基于有限元语言的编码方法、编译器及求解方法
CN111767055A (zh) * 2020-06-16 2020-10-13 合肥本源量子计算科技有限责任公司 一种量子程序的编译方法及装置
CN113221422A (zh) * 2021-05-18 2021-08-06 上海西陆信息科技有限公司 基于非线性流体数据信息处理技术的流体仿真模拟方法
CN113657064A (zh) * 2021-08-20 2021-11-16 华中科技大学 一种功率半导体模块多物理场联合仿真方法

Similar Documents

Publication Publication Date Title
Belz Automatic generation of weather forecast texts using comprehensive probabilistic generation-space models
Ross Applications and Extensions of SADT
Johnson et al. Integrating models and simulations of continuous dynamics into SysML
Tummescheit Design and implementation of object-oriented model libraries using modelica
Sen et al. Topological information content and expressiveness of function models in mechanical design
Salko et al. Optimization and parallelization of the thermal–hydraulic subchannel code CTF for high-fidelity multi-physics applications
CN108228187B (zh) 一种数值程序的全局优化方法
Konur et al. A property-driven methodology for formal analysis of synthetic biology systems
US20220405440A1 (en) Systems and methods for generating reduced order models
US9424005B1 (en) Templatized component
US11354463B1 (en) Systems and methods for generating code for computer-based physical models
US20110185307A1 (en) Generating equations based on user intent
Nowakowski et al. Requirements-level language and tools for capturing software system essence
Pârvu et al. A novel method to verify multilevel computational models of biological systems using multiscale spatio-temporal meta model checking
CN116643734A (zh) 多物理场的机器可执行有限元程序代码的生成方法和系统
Manca et al. Metabolic P systems: A discrete model for biological dynamics
Long et al. Assessing lifecycle value using object-based modeling by incorporating excess and changeability
Steingartner et al. From high-level language to abstract machine code: An interactive compiler and emulation tool for teaching structural operational semantics
Kannengiesser et al. An ontology of computer-aided design
Wang et al. Extracting requirements models from natural-language document for embedded systems
Monte OpenCMP: An open-source computational multiphysics package
CN113468875A (zh) 一种面向SCADA系统自然语言交互接口语义分析的MNet方法
Gieser On horizontally microprogrammed microarchitecture description techniques
CN106094561B (zh) 船舶综合电力推进系统建模仿真方法及装置
CN118034659A (zh) 自动生成cae仿真程序的方法、系统和介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination