一种网格边界面识别方法、有限元计算方法及装置
文献发布时间:2024-04-18 19:58:30
技术领域
本申请涉及电磁仿真技术领域,特别涉及一种网格边界面识别方法、有限元计算方法及装置。
背景技术
在EDA(Electronic Design Automation电子设计自动化)领域中,频域矢量有限元方法(Frequency Domain Vector Finite Element Method)是对复杂微波电路和器件进行基于电磁分析和优化的重要方法,关于高频AC电路仿真的分析,考虑到电场、磁场的连续性,一般采用矢量有限单元法(Vector Finite Element Method, VFEM)对电场或磁场矢量波动方程进行数值离散与求解。同时,在偏微分方程的求解中,为了使方程有唯一解,还需要结第一、二、三类边界条件进行方程的边界约束。在电路仿真中,常用的边界条件为第三类边界条件,比如:在金属导体表面,一般采用阻抗边界条件;在计算域表面,一般采用吸收边界条件。因此,为了数值计算的正常执行,需要在网格生成后根据不同的材料构件定义不同的边界条件。针对空间边界面的选取,主要有基于点的边界提取方法,需要根据邻接点之间的几何约束来迭代判断;除此之外针对边界面的识别还可以依据面的共用次数是否为0来进行;上述方法如果直接用于文中对于边界的识别,计算量大且边界识别不够迅速、智能,难以满足计算的效率要求。因此,针对传输线的电磁仿真特性,本文在网格中添加标记同时结合边界面选取算法来对不同材料表面网格进行选取,不仅避免了边界面选取的复杂度,同时还在满足计算精度的要求下,有效提升计算的自动化程度。
发明内容
有鉴于此,本申请提供了一种网格边界面识别方法、装置、设备及存储介质,以期解决电磁仿真有限元计算过程中边界识别效率低的技术问题。
具体的,本申请的技术方案如下:
一种网格边界面识别方法,应用于仿真元器件有限元计算,包括步骤:
构建面网格单元调用次数容器;
根据仿真元器件多面体网格的类型遍历仿真元器件多面体网格所包含的全部多面体网格单元,调用其所包含的全部面网格单元;
记录调用的面网格单元的调用次数;
根据面网格单元的调用次数和仿真元器件多面体网格的网格标记识别出网格边界面。
在一些实现中,一种网格边界面识别方法,仿真元器件多面体网格的网格标记包括:元器件主体多面体网格和空气盒子多面体网格;
网格边界面包括:元器件主体网格边界面和空气盒子网格边界面。
在一些实现中,一种网格边界面识别方法,根据面网格单元的调用次数和仿真元器件多面体网格的类型识别出网格边界面,具体包括:
当仿真元器件多面体网格的类型为元器件主体多面体网格时,将调用次数为一次的面网格单元确定为元器件主体网格边界面。
在一些实现中,一种网格边界面识别方法,根据面网格单元的调用次数和仿真元器件多面体网格的网格标记识别出网格边界面,还包括:
当仿真元器件多面体网格的类型为空气盒子多面体网格时,将调用次数为一次的面网格单元确定为初始网格边界面,找出每个构成初始网格边界面的面网格单元的网格节点坐标;
将每个构成初始网格边界面的面网格单元的网格节点坐标的坐标分量与计算域坐标的坐标分量进行对比,计算域坐标为构成空气盒子的顶点坐标;
剔除全部网格节点坐标的坐标分量均小于计算域坐标的坐标分量的面网格单元,剩余的面网格单元为空气盒子网格边界面。
在一些实现中,一种网格边界面识别方法,在根据面网格单元的调用次数和仿真元器件多面体网格的网格标记识别出网格边界面之后,还包括:
构建元器件主体网格边界矩阵;
将调用次数为一次的面网格单元的网格单元索引编号和调用次数为一次的面网格单元所属的多面体网格单元的网格单元索引编号存储在元器件主体网格边界矩阵中。
在一些实现中,在根据面网格单元的调用次数和仿真元器件多面体网格的网格标记识别出网格边界面之后,还包括:
构建空气盒子网格边界矩阵;
将剩余的面网格单元的网格单元索引编号和剩余的面网格单元所属的多面体网格单元的网格单元索引编号存储在空气盒子网格边界矩阵中。
在一些实现中,一种网格边界面识别方法,仿真元器件多面体网格为仿真元器件四面体网格,仿真元器件四面体网格单元为四面体网格单元,面网格单元为三角形面网格单元。
基于相同的技术构思,本申请还提供了一种有限元计算方法,应用于仿真元器件有限元计算,包括上述任一实现中的网格边界面识别方法;
还包括步骤:
读取仿真元器件多面体网格的基本数据;
根据基本数据分别构建仿真元器件多面体网格所包含的结构层级的数据结构,数据结构包括:网格标记容器;
在每个数据结构中设置数据接口;
在数据结构的网格标记容器中,通过数据接口填入对应的标记信息;
构建网格材料容器,存储标记信息和标记信息对应的材料信息的映射关系。
在一些实现中,一种有限元计算方法,基本数据包括:网格节点数、网格节点索引编号、网格节点坐标、网格单元数、网格单元中的节点索引编号、网格单元索引编号、网格类型以及网格标记;
数据结构还包括:网格节点矩阵、网格单元矩阵、网格类型矩阵;
结构层级包括:体网格单元、面网格单元、线网格单元和点网格单元;
根据基本数据分别构建仿真元器件多面体网格所包含的结构层级的数据结构,具体包括:
根据网格节点数和网格节点坐标构建网格节点矩阵;
根据网格单元数和网格单元中的节点索引编号构建网格单元矩阵;
根据网格单元数和网格类型构建网格类型矩阵;
根据网格单元数和网格标记构建网格标记容器。
基于相同的技术构思,本申请还提供了一种网格边界面识别装置,应用于仿真元器件有限元计算,包括:
边界面查找模块,用于根据仿真元器件多面体网格的网格标记遍历仿真元器件多面体网格所包含的全部多面体网格单元,调用其所包含的全部面网格单元;
调用次数记录模块,用于构建面网格单元调用次数容器,并记录找出面网格单元的调用次数;
网格边界面确定模块,用于根据面网格单元的调用次数和仿真元器件多面体网格的类型识别出网格边界面。
基于相同的技术构思,本申请还提供了一种有限元计算装置,应用于仿真元器件有限元计算,包括:
数据读取模块,用于读取仿真元器件多面体网格的基本数据;
数据结构构建模块,用于根据基本数据分别构建仿真元器件多面体网格所包含的结构层级的数据结构,数据结构包括:网格标记容器;
数据接口设置模块,用于在每个数据结构中设置数据接口;
标记填值模块,用于在数据结构的网格标记容器中,通过数据接口填入对应的标记信息;
网格材料存储模块,用于构建网格材料容器,存储标记信息和标记信息对应的材料信息的映射关系;
还包括上述网格边界面识别装置。
与现有技术相比,本申请至少具有以下一项有益效果:
1.有限元计算需要首先需要进行边界识别,通过对构成仿真元器件的多面体网格单元所包含的面网格单元进行调用,并记录调用次数,同时结合仿真元器件网格的网格标记,能够简单、快速、有效识别出需要进行有限元计算的元器件网格边界面。
2.通过对构成仿真元器件的元器件主体多面体网格和空气盒子多面体网格分别进行识别,能够有效防止在对空气盒子进行边界面识别时,将空气盒子内部与仿真元器件主体相接触的部分的边界面算入其中,导致有限元计算出现错误。
3.通过分别对元器件主体网格边界和空气盒子网格边界的面网格单元的网格单元索引编号以及面网格单元所在的体网格单元的网格单元索引编号进行存储,方便在进行有限元计算边界矩阵数值时快速调用,提高计算效率。
4.通过读取仿真元器件多面体网格的基本数据,在仿真元器件多面体网格所包含的结构层级中,从体、面、线、点,层层建立数据结构,方便在进行有限元计算时,提高读取与调用速度,提升计算效率。
5.通过在每个层级的每个数据结构中设置数据接口,使用户进行调用时,能够根据数据接口,快速进行数据存储、数据读取,使得有限元计算过程中,针对某一特定区域的计算时,快速定位,提升计算效率;同时,在有限元边界识别的过程中,可以利用已经建立的数据结构,实现边界面识别的快速进行。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对本申请的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是本申请一种网格边界识别方法的一个实施例的流程图;
图2是本申请一种网格边界识别方法的另一个实施例的流程图;
图3是本申请一种网格边界识别方法识别仿真微带线金属材质部分的网格边界面示意图;
图4是本申请一种网格边界识别方法识别仿真微带线介质层部分的网格边界面示意图;
图5是本申请一种网格边界识别方法识别的仿真微带线空气盒子与仿真微带线主体之间的结构关系示意图;
图6是本申请一种网格边界识别方法识别仿真微带线空气盒子的网格边界示意图;
图7是本申请一种有限元计算方法的一个实施例的流程图;
图8是本申请一种有限元计算方法的另一个实施例的流程图;
图9是本申请一种网格边界面识别装置的结构示意图;
图10是本申请一种有限元计算装置的结构示意图。
附图标号说明:1-空气盒子,2-仿真微带线主体。
具体实施方式
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对照附图说明本申请的具体实施方式。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与申请相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
在本文中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
另外,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在一个实施例中,参考说明书附图1,本申请提供的一种网格边界面识别方法,应用于仿真元器件有限元计算,在EDA(Electronic Design Automation电子设计自动化)领域中,频域矢量有限元方法(Frequency Domain Vector Finite Element Method)是对复杂微波电路和器件进行基于电磁分析和优化的重要方法,关于高频AC电路仿真的分析,考虑到电场、磁场的连续性,一般采用矢量有限单元法(Vector Finite Element Method,VFEM)对电场或磁场矢量波动方程进行数值离散与求解。同时,需要利用偏微分方程进行求解,为了使方程有唯一解,还需要第一、二、三类边界条件进行方程的边界约束。在电路仿真中,常用的边界条件为第三类边界条件,比如:在金属导体表面,一般采用阻抗边界条件,在计算域表面一般采用吸收边界条件。因此,为了数值计算的正常执行,需要在网格生成后根据不同的材料构件定义不同的边界条件。针对空间边界面的选取,主要有基于点的边界提取方法,需要根据邻接点之间的几何约束来迭代判断,除此之外针对边界面的识别还可以依据面的共用次数是否为0来进行。上述方法如果直接用于边界的识别,会造成计算量大或者边界识别不够智能的影响,难以满足计算的效率要求。因此,针对仿真元器件的电磁仿真特性,选取合适的边界来对不同材料表面网格进行选取,不仅避免了边界面选取的复杂度,同时还在满足计算精度的要求下,有效提升计算的自动化程度。
一种网格边界面识别方法,包括步骤:
S100,构建面网格单元调用次数容器。
在仿真软件中,针对仿真元器件通常采用网格来构造元器件,比如一个微带线的仿真元器件可以使用四面体网格、六面体网格或其他多面体网格进行构造,每个仿真元器件中包含若干个多面体网格单元,同时每个多面体网格单元又包括多个面网格单元,比如四面体网格单元包括4个三角形面网格单元,面网格单元同时又包括多个线网格单元,比如一个三角形面网格单元包括3个线网格单元,线网格单元之下又包括点网格单元,比如一个线网格单元具有2个点网格单元,以若干个体、面、线、点构成仿真元器件多面体网格,但正因如此,由如此之多的多面体网格单元构成的仿真元器件网格,使得多面体网格单元之间必定存在共用同一个面网格单元的情形。在进行网格边界面识别过程中,需要找到仿真元器件最外部的面的集合(也即不与其他面网格单元相接触的面网格单元),正是由于仿真元器件构建在外部表现为若干个面网格单元的结构特性,结合有限元计算是这种用于求解复杂物理问题的数值方法,本质上是将问题域划分为多个小单元,然后通过数值技术在这些单元上构建近似解,因此二者具有相通之处。通过S100首先通过建立网格单元调用次数容器,为寻找不与其他面网格单元相接触的最外部面网格单元做准备。容器与矩阵具有一定的共性和差别,二者都是用于存储数据,容器除了用于存储和组织多个数据元素外,这些元素可以是相同类型的有序或无序数字或矩阵等其他元素,主要目的是提供数据的集合或序列,以便进行添加、删除、检索和遍历等操作,因此面网格单元调用次数的记录使用容器进行存储较为合适。当然也可以使用矩阵,使用时定义矩阵的行或列维度为1即可,根据用户的使用需求进行设定,在此不作限制。
S200,根据仿真元器件多面体网格的网格标记遍历仿真元器件多面体网格所包含的全部多面体网格单元,调用其所包含的全部面网格单元。
为了找到不与其他面网格单元相接触的面网格单元,需要根据仿真元器件多面体网格的网格标记进行遍历,同时仿真元器件多面体网格的网格标记包括元器件主体多面体网格和空气盒子多面体网格,元器件主体多面体网格也即构成元器件整体构造的多面体网格所组成的合集,比如案例中的微带线多面体网格主要由3个长方体(由导线、地以及介质层组成)中多面体网格进行构造;空气盒子多面体网格是用于包裹元器件主体多面体网格的结构,用于定义仿真的空间范围,确定元器件或电路的工作环境,也如字面意义上的空气环境,通过将元器件放置在空气盒子内,仿真软件可以模拟元器件在特定环境中的行为。由于空气盒子除了最外部一层不与其他面网格单元相接触外,在其内部也存在与元器件主体相接触的结构,但这部分结构并不参与物理场吸收约束计算,在后续进行边界面确定时与元器件主体的边界面确定有所区别,需要进行剔除。
S300,记录调用的面网格单元的调用次数。
具体的,为了找到参与有限元计算的面网格单元,需要逐一调用全部的多面体网格单元中的面网格单元,同时每个面网格单元都具有唯一确定的索引编号,比如一个四面体网格单元由4个三角形面网格单元,从1-4进行编号,两个相互接触的四面体网格单元具有一个共用的三角形面网格单元,则具有7个三角形面网格单元,从1-7进行编号,如果4号三角形面网格单元是共用面,则第一个四面体网格单元的三角形面网格单元包括编号1-4号,第二个四面体面网格单元的三角形面网格单元包括编号4-7号,以上仅作举例。每找到一个在面网格单元调用次数容器中进行一次记录,最终调用全部面网格单元后在面网格单元调用次数容器中将呈现出每个面网格单元的调用次数。
S400,根据面网格单元的调用次数和仿真元器件多面体网格的网格标记识别出网格边界面。
具体的,有限元计算时,边界面的选取为元器件最外部的面,则可以认为调用次数为1次时,该多面体网格单元的面网格单元不与其他多面体网格单元的面网格单元相接触,再次利用上述举例,在进行调用时,调用第一个四面体网格单元的全部三角形面网格单元,对4号面网格单元进行了1次调用,同时调用第二个四面体网格单元的全部三角形面网格单元时,又对4号面网格单元进行了一次调用,此时在面网格单元调用次数容器中,4号面网格单元的位置记录数值为2,表示调用两次,则4号面必定不是进行有限元仿真计算的边界对象,而除了4号外的其他6个面均只调用了一次,则说明这6个面为外部的边界。存在特殊情况的是空气盒子的网格边界面识别,空气盒子的内部边界面并不参与物理场吸收约束计算,而空气盒子去掉元器件主体之后,其内腔的面也是调用次数为1的面网格单元,因此需要在进行边界面识别时,首先确定仿真元器件多面体网格的类型,再结合调用次数,识别网格边界面。通过上述方法进行仿真元器件多面体网格进行网格边界面的识别,使得边界面识别过程简化,在进行有限元计算需要利用网格边界面时,能够进行快速识别提高计算效率。
在一个实现中,一种网格边界面识别方法,仿真元器件多面体网格的类型包括:元器件主体多面体网格和空气盒子多面体网格。
网格边界面包括:元器件主体网格边界面和空气盒子网格边界面。
具体的,仿真元器件多面体网格由组成元器件主体的元器件主体多面体网格和空气盒子多面体网格构成。仿真元器件在进行构建时,通常会按照结构、形状或材料进行组合构建,例如仿真微带线的结构由导线、地以及介质层组成,导线和地由金属材质构成,介质层的常见材质是99.5%纯度氧化铝陶瓷 和聚烯烃或编织玻璃纤维材料,而仿真微带线这三个结构进行构造的时候也正好是三个长方体结构的组成,同时,空气盒子与元器件主体共同构成了仿真元器件,在进行边界识别时,需要将二者进行分别识别,主要是由于空气盒子在进行有限元计算时,内部与元器件主体相接触的部分并不参与物理场吸收约束计算,但单独分析空气盒子对面网格单元进行调用时,这部分相接触的面网格单元仍然仅调用了一次,因此边界面的识别与元器件主体存在差别。
在一个实现中,一种网格边界面识别方法,参考说明书附图2,根据面网格单元的调用次数和仿真元器件多面体网格的类型识别出网格边界面,具体包括:
S410,仿真元器件多面体网格的类型为元器件主体多面体网格。
S411,将调用次数为一次的面网格单元确定为元器件主体网格边界面。
具体的,在对元器件主体进行网格边界面识别时,元器件主体由若干个多面体网格单元构成,每个多面体网格单元具有多个面网格单元,这些面网格单元由于多面体网格单元相互紧靠,存在多个多面体网格单元共用同一个面的情形,而在元器件主体多面体网格的外部,则此面网格单元并不与其他多面体网格单元共用,因此,通过对组成元器件主体多面体网格的多面体网格单元中的面网格单元进行逐一调用,记录调用次数,找出调用次数为一次的面网格单元,这些面网格单元的集合便是元器件主体网格边界面。
优选的,构成元器件主体的各个部分存在材质不同的情况,此时需要按照材质进行划分后分别进行识别。比如,一个仿真元器件由两个长方体组成,第一长方体的材质为金属铜,第二长方体的材质为环氧树脂,则在进行历遍仿真元器件多面体网格所包含的全部多面体网格单元时,需要对其分开进行历遍,同时分开调用其所包含的全部所述面网格单元,并分别记录调用次数,得到两个网格边界面。
在一个实施例中,比如仿真元器件主体为一个正方体结构,而组成此正方体结构的元器件主体多面体网格由5个四面体网格单元构成(此处采用构成正方体最少需要5个正四面体的形式),每个四面体网格单元中包含4个面网格单元,因此,在构建时每个四面体网格单元之间必定存在共用同一个面的情况,每个面网格单元的索引编号是唯一的,因此20个面网格单元中,存在8个重复的面网格单元,在进行边界识别后的有限元计算中,仅有12个面参与,这12个面网格单元由于不与其他面进行接触,因此调用时,调用次数为1,通过此种方法,能够快速、不重复地找到仿真元器件主体网格的网格边界面。若5个四面体网格单元的材质不同时,比如外围的4个四面体材质相同,中间包裹的四面体材质不同,则需要分开进行调用次数记录,分别得到不同的网格边界。
在一个实现中,一种网格边界面识别方法参考说明书附图2,根据面网格单元的调用次数和仿真元器件多面体网格的类型识别出网格边界面,还包括:
S420,仿真元器件多面体网格的类型为空气盒子多面体网格。
S421,将调用次数为一次的面网格单元确定为初始网格边界面。
具体的,由于空气盒子多面体网格的特殊性在于其内部与元器件相互接触的部分并不参与有限元边界计算,而当空气盒子多面体网格独立于仿真元器件网格时,内部空腔形状是仿真元器件主体的形状,这一部分也不与其他面相互接触,需要将其去除,因此,初始网格边界面包括空气盒子外部的面以及空气盒子内部的空腔的面。
S422,找出每个构成初始网格边界面的面网格单元的网格节点坐标。
具体的,每个多面体网格单元由多个面网格单元构成,每个面网格单元由多个线网格单元构成,每个线网格单元由2个点网格单元构成,比如四面体网格单元,其主要由4个面、6条线、4个点构成,其中线和点存在共用现象。每个点,即网格节点的坐标是唯一确定的,首先找到这些网格节点坐标。
S423,将每个构成初始网格边界面的面网格单元的网格节点坐标的坐标分量与计算域坐标的坐标分量进行对比,计算域坐标为构成空气盒子的顶点坐标。
S424,剔除面网格单元全部的网格节点坐标的坐标分量均小于计算域坐标的坐标分量的面网格单元,剩余的面网格单元为空气盒子网格边界面。
具体的,计算域坐标是一个确定的点,比如空气盒子为一个长宽高均为1的正方体,且空气盒子正方体在空间直角坐标系中的一个顶点在原点,其8个顶点坐标可以表示为(0,0,0)、(1,0,0)、(0,1,0)、(0,0,1)、(1,1,0)、(1,0,1)、(0,1,1)和(1,1,1),这8个点的坐标即计算域的坐标,在坐标点中,x、y、z即为坐标分量,比如点(1,0,1)的x轴分量为1,y轴分量为0,z轴分量为1。将找到的每一个面网格单元所包括的网格节点坐标的坐标分量与计算域坐标的坐标分量进行对比,目的是找出那些存在于空气盒子内部的面网格单元,若此面网格单元所包含的全部网格节点坐标的坐标分量都小于计算域坐标的坐标分量,则说明此面网格单元在空气盒子的内部,并非所要找到的空气盒子网格边界面,剩余的面网格单元的合集便是空气盒子网格边界面。
在一些实现中,一种网格边界面识别方法,在根据面网格单元的调用次数和仿真元器件多面体网格的类型识别出网格边界面之后,还包括:
构建元器件主体网格边界矩阵。
将调用次数为一次的面网格单元的网格单元索引编号和调用次数为一次的面网格单元所属的多面体网格单元的网格单元索引编号存储在元器件主体网格边界矩阵中。
具体的,为了在进行有限元仿真计算时,能够快速找到进行计算的边界面,需要将已经找到的元器件主体网格边界进行存储,此时元器件主体网格边界的面网格单元的数量已经是具体确定的,因此存储时可以使用矩阵进行存储,当然也可以选择构建容器进行存储,在此不作具体限定,根据用户实际构建的数据结构以及应用要求选择使用。同时在仿真元器件多面体网格的构成中,每个多面体网格单元、面网格单元都具有唯一的网格单元索引编号,这些网格单元索引编号能够快速对其所表征的主体进行定位,因此,构建元器件主体网格边界矩阵时,通过将调用次数为一次的面网格单元的网格单元索引编号以及其所述的多面体网格单元的网格单元索引编号共同存储在元器件主体网格边界矩阵中,从而在有限元计算时,通过直接调用即可找到对应的多面体网格单元和面网格单元。
在一个实现中,一种网格边界面识别方法,在根据面网格单元的调用次数和仿真元器件多面体网格的网格标记识别出网格边界面之后,还包括:
构建空气盒子网格边界矩阵。
将剩余的面网格单元的网格单元索引编号和剩余的面网格单元所属的多面体网格单元的网格单元索引编号存储在空气盒子网格边界矩阵中。
具体的,为了在进行有限元仿真计算时,能够快速找到进行计算的边界面,需要将已经找到的空气盒子网格边界进行存储,此时空气盒子网格边界的面网格单元的数量已经是具体确定的,因此存储时可以使用矩阵进行存储,当然也可以选择构建容器进行存储,在此不作具体限定,根据用户实际构建的数据结构以及应用要求选择使用。同时在仿真元器件多面体网格的构成中,每个多面体网格单元、面网格单元都具有唯一的网格单元索引编号,这些网格单元索引编号能够快速对其所表征的主体进行定位,因此,构建空气盒子网格边界矩阵时,通过将剔除过空气盒子内部面网格单元后剩余的面网格单元的网格单元索引编号以及其所述的多面体网格单元的网格单元索引编号共同存储在元器件主体网格边界矩阵中,从而在有限元计算时,通过直接调用即可找到对应的多面体网格单元和面网格单元。
在一个实施例中,一种网格边界面识别方法,仿真元器件多面体网格为仿真元器件四面体网格,仿真元器件四面体网格单元为四面体网格单元,面网格单元为三角形面网格单元,基于此识别仿真微带线网格边界面,仿真微带线包括金属层、接地层、介质层和空气盒子四个部分,其中金属层、接地层和介质层为三个叠在一起的长方体组成仿真元器件主体,空气盒子为将仿真元器件主体包裹起来的区域,同时金属层和接地层的材质相同,为某一特定的金属,介质层为某一特定的金属以外的其他材质。
针对不同的材质的结构,分别调用三角形面网格单元,分别构建三角形面网格单元调用次数的容器,并且将容器内部初始化所有元素为0。然后遍历所有四面体网格单元,找出其包含的三角形面网格单元,每找出一次三角形面网格单元,在该容器中对应三角形面网格单元的索引编号的位置加一,如果遍历完所有网格,三角形网格调用次数为1的即可视为该部分的网格边界面,也即元器件主体网格边界面。其中包含有金属材质的网格边界面,见图3。介质层网格边界面,见图4。针对空气盒子,除采用上述方法找出初始网格边界面外,还需对找出的网格边界面进行二次遍历,找到每个三角形面网格的节点坐标,对每个三角形面网格单元的网格单元节点坐标与整个网格的计算域坐标分量比较,如果三角形网格所有节点的三个坐标分量值都小于计算域坐标分量,则该网格边界面属于内部空气域与其他部件网格的交界面,需要剔除,如果不剔除,则网格边界会包含与内部结构的交界面,空气盒子1内部空气域与仿真微带线主体2之间的结构关系示意图见图5。因此,剔除内部边界后最终留下来的三角形面网格单元即为计算所需的空气盒子网格边界面,见图6。
基于不同的仿真元器件多面体网格的类型以及元器件主体多面体网格的材质,需要构建对应的网格边界面矩阵,储存其网格边界面的三角形面网格单元,比如元器件主体网格边界共有1090个四面体网格单元组成了网格边界面,矩阵的维度为1090×2,每一行储存该三角形面网格单元的索引编号与该三角形面所在的四面体网格单元的索引编号;在进行方程离散中,只需要根据其四面体的材料,找到该材料对应的相对磁导率或相对介电常数等进行计算即可。空气盒子在计算中需要在外侧的边界施加吸收边界条件,因此需要构建含有最外侧表面网格的网格边界面矩阵,同样储存三角形面网格单元的网格索引编号及其对应的四面体网格单元的网格索引编号。
本申请还提供了一种有限元计算方法,应用于仿真元器件有限元计算,参考说明书附图7,包括:上述任一实现中网格边界面识别方法。
还包括步骤:
S500,读取仿真元器件多面体网格的基本数据。
首先将仿真元器件多面体网格的网格节点数、网格节点坐标、网格单元数、网格节点索引编号、网格单元索引编号、网格单元节点索引编号、网格类型以及网格标记进行读取。并以此进行进一步的数据结构的构建。仿真元器件多面体网格是由某一种或多种多面体共同构建形成的仿真元器件,比如通过四面体进行构建时,仿真元器件多面体网格是由若干个四面体形成的形状结构。网格节点是指在构成仿真元器件多面体网格时,其中所包含的点,比如一个四面体网格单元就是4个网格节点。网格单元数是指其中多面体网格单元的个数,每一个多面体都是一个网格单元,如果该层级是面网格单元的层级,网格单元数就是面网格单元的数量,每一个面都是一个网格单元。网格节点索引编号是指构成仿真元器件多面体网格中各个节点唯一确定的值,比如一个仿真元器件多面体网格由100个网格节点构成,每个节点按照从1-100进行编号,尽管组成仿真元器件多面体网格的多面体存在共用同一个点的现象,也不影响该网格节点的网格节点索引编号。网格类型是指构成仿真元器件多面体网格的每一个多面体网格单元的类型,该网格类型所对应的数值是预先设定的,比如四面体网格单元的编号是5,六面体网格单元的编号可以设置为6。网格标记是指构成仿真元器件多面体网格的每个多面体网格单元的材质,该网格标记所对应数值也是预先设定的,比如金属铜的网格标记是1,介质层为环氧树脂网格标记是2,空气盒子中间的介质是空气,网格标记为3,首先将这些数据逐一读取,为构建数据结构做准备。
S600,根据基本数据分别构建仿真元器件多面体网格所包含的结构层级的数据结构,数据结构包括:网格标记容器。
具体的,在读取上述的基本数据之后,需要针对仿真元器件多面体网格的结构层级进行构建,结构层级可以是组成仿真元器件多面体网格的多面体网格单元、多面体网格单元所包含的面网格单元、面网格单元所包含的线网格单元、线网格单元所包含的点网格单元,从体、面、线和点四个结构层级进行构建数据结构,每层数据结构都具有多个数据矩阵和数据容器,比如网格标记容器。
S700,在每个数据结构中设置数据接口。
为了能快速地读取、存储基本数据在数据结构中,需要在每层数据结构的数据矩阵和数据容器中设置数据接口,在进行数据读取和存储时,通过数据接口能够快速定位和调用,相当于在某一数据存储位置添加了一个唯一确定的标记,从而帮助用户进行调用和数据处理。
S800,在数据结构的网格标记容器中,通过数据接口填入对应的标记信息;
具体的,在进行数据结构的构建过程中,已经建立好的数据结构尚未存储数据,在存储数据过程中,利用数据接口定位找到对应的网格标记容器,将对应的标记信息填入其中,比如某一个单元索引编号为100的四面体网格单元的材质是金属铜,铜的网格标记是1,则根据数据接口直接找到单元索引编号为100的四面体网格单元的网格标记容器,将网格标记1存入其中。
S900,构建网格材料容器,存储标记信息和标记信息对应的材料信息的映射关系。
在进行有限元计算时,最主要考虑到的问题就是计算对象的材质问题,需结合金属材料的导电率、相对磁导率等内容,从而便于后续离散边界条件时,能够准确读取该网格边界面所包含的材料属性。在对映射关系进行存储时,采用容器的形式可以将数据映射结构以pair
在一个实现中,一种有限元计算方法,基本数据包括:网格节点数、网格节点索引编号、网格节点坐标、网格单元数、网格单元中的节点索引编号、网格单元索引编号、网格类型以及网格标记。
数据结构还包括:网格节点矩阵、网格单元矩阵、网格类型矩阵。
结构层级包括:体网格单元、面网格单元、线网格单元和点网格单元。
根据基本数据分别构建仿真元器件多面体网格所包含的结构层级的数据结构,参考说明书附图8,具体包括:
S610,根据网格节点数和网格节点坐标构建网格节点矩阵;
S620,根据网格单元数和网格单元中的节点索引编号构建网格单元矩阵。
S630,根据网格单元数和网格类型构建网格类型矩阵。
S640,根据网格单元数和网格标记构建网格标记容器。
具体的,分别在体网格单元、面网格单元、线网格单元和点网格单元下,分别构建网格节点矩阵、网格单元矩阵、网格类型矩阵和网格标记容器。例如在节点数量为802、单元数量为3996的四面体网格单元下建立数据结构时,首先读取网格节点数和网格节点坐标,即构建一个802×3的网格节点矩阵,每行存储对应节点索引编号的x、y、z坐标分量数值,第一行存储网格节点索引编号为1的坐标分量数值。然后读取网格单元数和网格单元中的节点索引编号,同时,每个四面体网格单元包括4个网格单元节点,即构建一个3996×4的网格单元矩阵,比如第一行存储第一个四面体网格单元的4个网格节点索引编号,如[737, 733,523, 775],表示第一个四面体网格单元由网格节点索引编号为737、733、523、755的网格节点所确定。针对网格类型矩阵,由于具有3996个四面体,因此矩阵维度为3996×1,每一行储存对应该四面体网格单元的类型数值,由于在该实施例中组成仿真元器件网格都是四面体网格单元,因此设置四面体网格单元网格类型编号为5,形成一个具有3996行,每行数值都为5的网格类型矩阵。针对网格标记,以容器形式保存,维度为3996,储存上述四面体网格单元所对应的网格标记值,比如在微带线中,元器件主体由导线、接地层材料都为铜,所以网格标记都为1,介质层的材料都为环氧树脂,所以网格标记为2,空气盒子的材料为空气,所以网格标记为3,分别进行构建。四面体网格下的数据结构,其基本信息(data)为每行数据为该四面体四个面索引编号的3996×4的矩阵。
在四面体网格单元之下还包还有面网格单元的矩阵结构,内容和上述基本数据结构重复,所以只声明,不定义维度和填值;同时还包含有线(edge)的矩阵结构,维度为3996×6,储存每个四面体下六条边的索引值;其次还有点(node)的矩阵结构,维度为3996×4,储存每个四面体下四个节点的索引值;还包括有网格标记(tag)的矩阵结构,维度为3996×1,储存每个四面体单元的网格标记。构建完成后,在对应的数据结构中设置数据接口,便于进行数据存储与读取等数据处理操作。
在一个实施例中,首先进行数据结构的构建,然后依据此数据结构识别有限元计算的网格边界面识别,以提高网格边界面识别的效率。具体包括步骤:
读取仿真元器件多面体网格的基本数据,基本数据包括:网格节点数、网格节点索引编号、网格节点坐标、网格单元数、网格单元中的节点索引编号、网格单元索引编号、网格类型以及网格标记。
根据基本数据分别构建仿真元器件多面体网格所包含的结构层级的数据结构,数据结构包括:网格标记容器。
在每个数据结构中设置数据接口。
在数据结构的网格标记容器中,通过数据接口填入对应的标记信息。
构建网格材料容器,存储标记信息和标记信息对应的材料信息的映射关系。
读取构建的网格材料容器,按照映射关系分别构建面网格单元调用次数容器。
根据仿真元器件多面体网格的网格标记遍历仿真元器件多面体网格所包含的全部多面体网格单元,调用其所包含的全部面网格单元。
记录调用的面网格单元的调用次数。
根据面网格单元的调用次数和仿真元器件多面体网格的网格标记识别出网格边界面。
具体的,读取基本数据之后,分别在体网格单元、面网格单元、线网格单元和点网格单元下进行数据结构的构建,分别构建网格节点矩阵、网格单元矩阵、网格类型矩阵和网格标记容器。例如在节点数量为802、单元数量为3996的四面体网格单元下建立数据结构时,首先读取网格单元数和网格节点索引编号,即构建一个802×3的网格节点矩阵,每行存储对应节点索引编号的x、y、z坐标分量数值,第一行存储网格节点索引编号为1的坐标分量数值。然后读取网格单元数和构成网格单元的网格节点索引编号,同时,每个四面体网格单元包括4个网格单元节点,即构建一个3996×4的网格单元矩阵,比如第一行存储第一个四面体网格单元的4个网格节点索引编号,如[737, 733, 523, 775],表示第一个四面体网格单元由网格节点索引编号为737、733、523、755的网格节点所确定。针对网格类型矩阵,由于具有3996个四面体,因此矩阵维度为3996×1,每一行储存对应该四面体网格单元的类型数值,由于在该实施例中组成仿真元器件网格都是四面体网格单元,因此设置四面体网格单元网格类型编号为5,形成一个具有3996行,每行数值都为5的网格类型矩阵。针对网格标记,以容器形式保存,维度为3996,储存上述四面体网格单元所对应的网格标记值,比如在微带线中,元器件主体由导线、接地层材料都为铜,所以网格标记都为1,介质层的材料都为环氧树脂,所以网格标记为2,空气盒子的材料为空气,所以网格标记为3,分别进行构建。在对映射关系进行存储时,采用容器的形式可以将数据映射结构以pair
在构建完成数据结构的四面体网格数据结构下,针对标记编号为1、2的金属、介质网格,分别识别不同网格标记中的三角形面网格单元,在每一个网格标记下,构建三角形面网格调用次数容器,并且初始化所有元素为0。然后遍历所有四面体网格单元,找出其包含的三角形面网格单元,每找出一次三角形面网格单元,在该容器中对应三角形面网格单元的网格索引编号的位置加1,如果遍历完该标记网格下的所有网格,三角形网格调用次数为1的即可视为该部分网格的网格边界面。针对网格标记的编号为3的空气盒子,除采用上述方法找出初始网格边界面外,还需对找出的边界面网格进行二次遍历,找到每个三角形面网格单元的网格单元节点坐标,对每个三角形面网格单元节点坐标与整个网格的计算域坐标分量比较,如果三角形面网格单元的所有节点的三个坐标分量值都小于计算域坐标分量,则该网格边界面属于内部空气域与其他部件网格的交界面,需要剔除,如果不剔除,则网格边界会包含与内部结构的交界面。因此,剔除内部边界后最终留下来的三角形面网格单元即为计算所需的空气盒子网格边界面。最后构建与三角形面网格单元调用次数容器维度一致的容器,用于储存该三角形面网格单元的网格单元索引编号以及其所对应的四面体网格单元的网格单元索引编号。
基于相同的技术构思,本申请还提供了一种网格边界面识别装置,应用于仿真元器件有限元计算,参考说明书附图9,包括:
边界面查找模块100,用于根据仿真元器件多面体网格的类型历遍仿真元器件多面体网格所包含的全部多面体网格单元,调用其所包含的全部面网格单元。
调用次数记录模块200,用于构建面网格单元调用次数容器,并记录找出面网格单元的调用次数。
网格边界面确定模块300,用于根据面网格单元的调用次数和仿真元器件多面体网格的网格标记识别出网格边界面。
调用次数记录模块200通过建立网格单元调用次数容器,为寻找不与其他面网格单元相接触的最外部面网格单元做准备,同时逐一调用全部的多面体网格单元中的面网格单元。容器与矩阵具有一定的共性和差别,二者都是用于存储数据,容器除了用于存储和组织多个数据元素外,这些元素可以是相同类型的有序或无序数字或矩阵等其他元素,主要目的是提供数据的集合或序列,以便进行添加、删除、检索和遍历等操作,因此面网格单元调用次数的记录使用容器进行存储较为合适。当然也可以使用矩阵,使用时定义矩阵的行或列维度为1即可,根据用户的使用需求进行设定,在此不作限制。边界面查找模块100用于找到不与其他面网格单元相接触的面网格单元,需要根据仿真元器件多面体网格的网格标记进行遍历,同时仿真元器件多面体网格的类型包括元器件主体多面体网格和空气盒子多面体网格,元器件主体多面体网格也即构成元器件整体构造的多面体网格所组成的合集,比如微带线多面体网格主要由3个长方体(由导线、地以及介质层组成)中的多面体网格进行构造;空气盒子多面体网格是用于包裹元器件主体多面体网格的结构,用于定义仿真的空间范围,确定元器件或电路的工作环境,也如字面意义上的空气环境,通过将元器件放置在空气盒子内,仿真软件可以模拟元器件在特定环境中的行为。由于空气盒子除了最外部一层不与其他面网格单元相接触外,在其内部也存在与元器件主体相接触的结构,但这部分结构并不参与计算,后续处理时需要去除。
在一个实现中,一种网格边界面识别装置还包括:网格边界面确定模块300,包括第一网格边界确定子模块310和第一网格边界确定子模块320;
第一网格边界确定子模块310用于当仿真元器件多面体网格的类型为元器件主体多面体网格时,将调用次数为一次的第一面网格单元确定为元器件主体网格边界面。
具体的,在对元器件主体进行网格边界面识别时,元器件主体由若干个多面体网格单元构成,每个多面体网格单元具有多个面网格单元,这些面网格单元由于多面体网格单元相互紧靠,存在多个多面体网格单元共用同一个面的情形,而在元器件主体多面体网格的外部,则此面网格单元并不与其他多面体网格单元共用,因此,通过边界面查找模块100对组成元器件主体多面体网格的多面体网格单元中的面网格单元进行逐一调用,调用次数记录模块200记录调用次数,第一网格边界确定子模块310找出调用次数为一次的面网格单元,这些面网格单元的集合便是元器件主体网格边界面。优选的,构成元器件主体的各个部分存在材质不同的情况,此时需要按照材质进行划分后分别进行识别。
第一网格边界确定子模块320包括:初始网格边界确定单元321、对比单元322和网格边界确定单元323。
初始网格边界确定单元321用于当仿真元器件多面体网格的类型为空气盒子多面体网格时,将调用次数为一次的面网格单元确定为初始网格边界面,找出每个构成初始网格边界面的面网格单元的网格节点坐标。
对比单元322用于对比网格节点坐标的坐标分量与计算域坐标的坐标分量,计算域坐标为构成空气盒子的顶点坐标。
网格边界确定单元323用于根据对比单元322的对比结果剔除网格节点坐标的坐标分量均小于计算域坐标的坐标分量的面网格单元,剩余的面网格单元为空气盒子网格边界面。
具体的,由于空气盒子多面体网格的特殊性在于其内部与元器件相互接触的部分并不参与有限元物理约束计算,而当空气盒子多面体网格独立于仿真元器件网格时,内部空腔形状是仿真元器件主体的形状,这一部分也不与其他面相互接触,需要将其去除,因此,初始网格边界确定单元321确定的初始网格边界面包括空气盒子外部的面以及空气盒子内部的空腔的面。对比单元322将找到的每一个面网格单元所包括的网格节点坐标的坐标分量与计算域坐标的坐标分量进行对比,目的是找出那些存在于空气盒子内部的面网格单元,若此面网格单元所包含的全部网格节点坐标的坐标分量都小于计算域坐标的坐标分量,则说明此面网格单元在空气盒子的内部,并非所要找到的空气盒子网格边界面,网格边界确定单元323将剩余的面网格单元组成的合集便是空气盒子网格边界面。
在一个实现中,一种网格边界面识别装置还包括:边界矩阵构建模块400,用于构建元器件主体网格边界矩阵和空气盒子网格边界矩阵,包括:
第一边界矩阵构建子模块410,用于将调用次数为一次的面网格单元的网格单元索引编号和调用次数为一次的面网格单元所属的多面体网格单元的网格单元索引编号存储在元器件主体网格边界矩阵中。
第二边界矩阵构建子模块420,用于将剩余的面网格单元的网格单元索引编号和剩余的面网格单元所属的多面体网格单元的网格单元索引编号存储在空气盒子网格边界矩阵中。
具体的,为了在进行有限元仿真计算时,能够快速找到进行计算的边界面,第一边界矩阵构建子模块410将已经找到的元器件主体网格边界进行存储,此时元器件主体网格边界的面网格单元的数量已经是具体确定的,因此存储时可以使用矩阵进行存储,当然也可以选择构建容器进行存储,在此不作具体限定,根据用户实际构建的数据结构以及应用要求选择使用。同时在仿真元器件多面体网格的构成中,每个多面体网格单元、面网格单元都具有唯一的网格单元索引编号,这些网格单元索引编号能够快速对其所表征的主体进行定位,因此,构建元器件主体网格边界矩阵时,通过将调用次数为一次的面网格单元的网格单元索引编号以及其所述的多面体网格单元的网格单元索引编号共同存储在元器件主体网格边界矩阵中,从而在有限元计算时,通过直接调用即可找到对应的多面体网格单元和面网格单元。相应地,第二边界矩阵构建子模块420将已经找到的空气盒子网格边界进行存储,构建空气盒子网格边界矩阵时,通过将剔除过空气盒子内部面网格单元后剩余的面网格单元的网格单元索引编号以及其所述的多面体网格单元的网格单元索引编号共同存储在元器件主体网格边界矩阵中。
基于相同的技术构思,本申请还提供了一种有限元计算装置,应用于仿真元器件有限元计算,参考说明书附图10,包括:
数据读取模块500,用于读取仿真元器件多面体网格的基本数据。
数据结构构建模块600,用于根据基本数据分别构建仿真元器件多面体网格所包含的结构层级的数据结构,数据结构包括:网格标记容器。
数据接口设置模块700,用于在每个数据结构中设置数据接口。
标记填值模块800,用于在数据结构的网格标记容器中,通过数据接口填入对应的标记信息。
网格材料存储模块900,用于构建网格材料容器,存储标记信息和标记信息对应的材料信息的映射关系。
还包括:上述任一实现的网格边界面识别装置。
在一个实现中,一种有限元计算装置中,
基本数据包括:网格节点数、网格节点索引编号、网格节点坐标、网格单元数、网格单元中的节点索引编号、网格单元索引编号、网格类型以及网格标记。
数据结构还包括:网格节点矩阵、网格单元矩阵、网格类型矩阵。
结构层级包括:体网格单元、面网格单元、线网格单元和点网格单元。
数据结构构建模块包括:
第一构建子模块610,用于根据网格节点数和网格节点坐标构建网格节点矩阵。
第二构建子模块620,用于根据网格单元数和网格单元中的节点索引编号构建网格单元矩阵。
第三构建子模块630,用于根据网格单元数和网格类型构建网格类型矩阵。
第四构建子模块640,用于根据网格单元数和网格标记构建网格标记容器。
应当说明的是,上述实施例均可根据需要自由组合。以上仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
- 一种应用于底片检查机的网格区域识别方法及装置
- 一种胶接界面强度的计算方法、装置及电子设备
- 一种基于离散粒子-有限元网格耦合模型的界面计算方法及装置
- 一种自适应二维有限元疏密网格界面过渡方法