掌桥专利:专业的专利平台
掌桥专利
首页

一种基于CAD的平行六面体体积平均共形网格剖分方法

文献发布时间:2023-06-19 19:30:30


一种基于CAD的平行六面体体积平均共形网格剖分方法

技术领域

本发明属于电数字数据处理技术领域,具体涉及平行六面体体积平均共形网格剖分方法。

背景技术

网格剖分的优化是数值计算中十分重要的一步,有限差分法用常用的网格为平行六面体网格(体像素网格),例如电磁场时域有限差分法(FDTD)。而平行六面体网格一个格子只能为一种材料,故在对弯曲表面建模时会呈现阶梯形状,势必会降低网格的可靠性,因此许多共形网格技术被提出来,其中最具有通用性和代表性的是体积平均网格,即格子的材料系数由格子内部所有填充的材料根据体积占比进行加权平均得到,根据具体数值计算使用的物理公式不同,还可以在体积平均的基础上改进,例如FDTD的极化体积平均网格则在体积平均的基础上添加了材料分界面的法向量信息。已公开的体积平均网格计算方法多采取近似法,例如格内采样法和表面填充估算法等。格内采样法即在一个格子内均匀的放上采样点,而格子的材料系数就是格内所有采样点处材料系数的平均数,例如LumericalFDTD 软件中的dielectric volume average 便是采用此种方法;表面填充估算法则是计算出平行六面体六个面上的材料填充面积,并使用这些信息估算材料在格子内部的填充体积,例如Lumerical FDTD 软件中的volume average 采用此种类似的方法。传统的格内采样法计算体像素填充体积需要计算的越精确,则需要越多的体像素内采样点,存在网格精度低,计算速度慢、和计算量大等缺点。表面填充估算法则存在计算精度低的缺陷。

发明内容

本发明的目的是针对现有技术的不足,提供一种基于CAD的平行六面体体积平均共形网格剖分方法,该方法可以将三维高斯三角网(闭合三角网)根据体积平均计算方式转换为平行六面体网格,并且此过程中计算的格内体积都是精确的体积。除FDTD以外,该方法可用于任何使用平行六面体网格计算的算法。

本发明解决其技术问题采用的技术方案是:一种基于CAD的平行六面体体积平均共形网格剖分方法,包括以下步骤:

1、使用CAD对物体进行建模,得到描述该物体的三角网模型;对仿真空间进行平行六面体网格划分,得到一系列体像素;

2、读取三角网模型和平行六面体网格,计算出该模型的阶梯网格;遍历三角网模型中的所有三角形,计算每个三角形的包围盒;

3、遍历与包围盒发生交叠碰撞的体像素,使用分离面定理检测包围盒内的体像素与三角形的碰撞情况,如果发生碰撞则将三角形添加到该体像素的三角形集合中;遍历完所有三角形,得到位于目标模型边界处的体像素集合和集合中每一个体像素对应的与其碰撞的三角形集合;

4、遍历体像素集合,并调出与其碰撞的三角形集合,计算三角形留在该体像素内部的部分,使用平行六面体裁剪三角形算法,得到分割曲面,并根据分割曲面与体像素的上顶面的相交情况填补顶面上的多边形,得到遮荫面;使用阴影体积算法计算出不同材料在体像素内的填充体积;计算每个体像素的体积平均等效材料系数,利用计算得到的体像素的体积平均等效材料系数更新阶梯网格中的材料系数,得到平行六面体体积平均共形网格。

进一步地,所述分离面定理具体为:对于任意两个凸多面体,若存在一个分离面,使得单个凸多面体所有顶点在该分离面的同侧,并且该两个凸多面体各自的所有顶点分别位于该分离面的两侧,则该两个凸多面体没有重合,不发生碰撞。

进一步地,所述平行六面体裁剪三角形算法具体包括:首先使用3D-Liang-Barsky算法,将平行六面体作为三维窗口对三角形的每条边进行裁剪,得到留在三维窗口内部的部分,再使用三维窗口的六个边界面分别对三角形进行求交线计算,交线只保留在三维窗口内部的部分,所有裁剪得到的线段都是有向线段,所有的有向线段首尾相连得到多边形;遍历三角形集合后得到多个多边形,这些多边形彼此相连形成一个分割曲面。

进一步地,若分割曲面边界与体像素的上顶面相交,则在体像素的上顶面填补一个多边形,填补的多边形与分割曲面相加得到遮荫面。

进一步地,填补多边形的方法为:计算分割曲面留在体像素上顶面的边集合,将起点端的有向线段反向延长至无穷远,将终点端的有向线段正向延长至无穷远,得到广义多边形,通过Sutherland-Hodgman裁剪算法使用体像素上顶面的四条边依次对广义多边形进行裁剪,裁剪完成后得到填补的多边形。

进一步地,阴影体积算法具体为:将遮荫面拆分为多个平面多边形,每一个平面多边形与其在体像素底面上的投影构成一个不规则柱体,将不规则柱体拆分为多个上顶面倾斜的不规则三棱柱,不规则三棱柱的体积计算见公式为:

其中,

按照遮荫面上多边形的外法向量区分内外,将位于遮荫面以内的所有不规则柱体的阴影体积添加正号,位于遮荫面以外的所有不规则柱体的阴影体积添加负号;将所有带符号的阴影体积求和,得到遮荫面的阴影体积,当遮荫面的阴影体积为正数时,其为目标模型留在体像素内部的体积,当遮荫面的体积为负数时,目标模型留在体像素内部的体积为体像素体积加上遮荫面的体积。

本发明与现有技术相比,具有如下有益效果:与现有的商业软件对比,在同一模型网格剖分下,本发明所用的时间明显更少。本发明提出的算法在速度上超过LumericalFDTD网格生成器,并且随着网格规模变大其速度优势进一步体现出来,这归结于本发明拥有更少的计算复杂度,并且生成的体积平均共形网格的精度没有来自估算和离散采样上的损失。

附图说明

图1为本发明的基于CAD的平行六面体体积平均共形网格剖分方法的流程示意图;

图2为三角形以及其包围盒示意图;

图3为分离轴定理示意图;

图4为体像素对三角形裁剪示意图;

图5为体像素以及与它相碰撞的所有三角形;

图6为体像素中分割曲面和上顶面填补的多边形示例;其中,(a)阴影部分为由多边形

图7为体像素上顶面与分割曲面相交示例;

图8 为使用左、右两边对广义多边形进行裁剪;其中,(a)表示使用左边所在直线进行裁剪;(b)表示使用右边所在直线进行裁剪;

图9为使用下、上两边对广义多边形进行裁剪;其中,(a)表示使用下边所在直线进行裁剪;(b)表示使用上边所在直线进行裁剪;

图10为遮荫面和光线示意图;

图11为不规则多棱柱分解为不规则三棱柱的示意图;

图12为圆环体三角网模型;

图13为圆环体体积平均体像素模型;

图14为玩具飞机三角网模型;

图15为玩具飞机体积平均体像素模型;

图16为圆环体在不同分辨率下网格生成用时对比图(纵坐标为所用时间,横坐标为x轴网格数)。

具体实施方式

下面将结合本发明的实施例和附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,绝不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明公开一种可以将三维高斯三角网(闭合三角网)根据体积平均计算方式转换为平行六面体网格,此方法包括但不限于体积平均平行六面体网格的生成,在计算过程中给出了充足的几何信息可用于计算大多数基于体积平均体像素网格改进的方法,并且此过程中计算的格内填充体积都是精确的体积。在计算速度上与Ansys Lumerical 软件的FDTD模块的体积平均网格生成速度进行了对比,本发明在计算速度上具有明显的优势。除FDTD以外,此方法可用于任何使用平行六面体网格计算的算法。

本发明提出的基于CAD的平行六面体体积平均共形网格剖分方法,流程如图1所示,读取CAD模型(闭合三角网集合)和平行六面体网格,使用光线追踪算法计算出阶梯网格,再使用分离轴定理检测三角形与平行六面体的碰撞,依此计算出与同一个平行六面体相碰撞的所有三角形,得到边界网格以及每个边界网格的三角形集合(与某个格子发生碰撞的三角形集合),之后再计算该三角形集合在平行六面体内的部分,遍历完三角形集合后得到一个可将平行六面体分割为多个部分的曲面(此面下文称其为分割曲面),计算分割曲面留在体像素上顶面的边集合,通过Sutherland-Hodgman裁剪算法得到上顶面上的填补多边形,填补多边形和分割曲面相加得到遮荫面,通过阴影体积算法可以从遮荫面和平行六面体的几何信息中计算出阴影体积,而材料的填充体积可由阴影体积计算得出,最后得到边界网格的材料属性并用其更新阶梯网格得到体积平均共形网格。

本发明的基于CAD的平行六面体体积平均共形网格剖分方法,详细步骤如下:

1、在使用CAD对物体进行建模之后,得到描述该物体的三角网模型,如图12和图14所示,文件形式可以是STL等三角面元格式的文件。对仿真空间进行网格划分,得到一系列体像素,即平行六面体网,此时体像素上的材料系数还是未知的。

2、网格生成器首先读取三角网格和平行六面体网格,使用光线追踪算法计算出该三角网模型的阶梯网格。再遍历所有三角形,计算三角形的包围盒,包围盒是指在直角坐标系中刚好可包围目标(三角形)的最小平行六面体,且每一边都平行于一个坐标平面,如图2所示。

遍历包围盒内以及被包围盒碰到的体像素,并使用分离面定理检测体像素与该三角形的碰撞情况,如果发生碰撞则将三角形添加到该体像素的三角形集合中,遍历完所有三角形便得到位于目标模型边界处的体像素集合和该集合中每一体像素对应的与其发生碰撞的三角形集合。

分离面定理由分离轴定理推导而出。分离轴定理可用于检测两个二维凸多边形是否有重合,如果两个凸多边形没有重合,那么必然存在一条直线(分离轴)将两者分离。如果某条分离轴是真的,垂直该分离轴做一条直线,将两个多边形投影到该直线上,则该两段投影线段不相交。检测是否存在这样一条真的分离轴的方法为:遍历所有潜在的分离轴方向,即两多边形所有边的方向集合,垂直该边的方向做一条任意的直线,通过多边形在该直线上的投影判断潜在分离轴的真假,只要有一条为真,则两凸多边形是不重合的,反之两个多边形重合。如图3所示,线段

3、遍历位于目标模型边界处的体像素集合,并调出其三角形集合,这一步需要计算三角形留在体像素内部(包括边界)的部分。使用平行六面体裁剪三角形算法,对于该体像素发生碰撞的三角形进行裁剪,获得分割曲面。

平行六面体裁剪三角形算法具体为:如图4所示,三角形

在遍历三角形集合后将得到多个2D多边形,这些多边形彼此相连形成一个曲面,称其为分割曲面,如图5所示,分割曲面由多边形

由于阴影体积算法的特性,分割曲面最外边界不应该与体像素的上顶面(光线进入体像素的面)相交,如果有相交,如图6中(a)所示,即分割曲面边界与体像素的上顶面相交,则应该如图6中(b)所示补上一个多边形

4、采用阴影体积算法计算遮荫面的阴影体积;使用体积占比加权平均法计算每个体像素的材料系数,用体像素的材料系数更新阶梯网格中的材料系数,便得到了平行六面体体积平均共形网格,最终输出平行六面体体积平均共形网格。

阴影体积算法如图10所示,一个空间内有一束照向地面的平行光和一个不透明曲面,即遮荫面(由多个平面多边形组成),在遮荫面和地面(体像素底面)之间有一段光线无法进入的空间称为阴影体积。阴影体积的计算方式为将遮荫面拆分为多个平面多边形,每一个平面多边形与其在体像素底面上的投影组成不规则柱体,得到多个上顶面倾斜的不规则柱体,如图11所示,每一个不规则柱体又可以拆分为多个上顶面倾斜的不规则三棱柱,不规则三棱柱的体积计算公式见式(1):

其中,

理论上,由于遮荫面都是从闭合高斯面中截取出来的部分曲面,因此遮荫面的两侧分别表示了高斯面的内和外,用遮荫面上多边形的外法向量区分高斯面的内、外,如图10中,

由遮荫面的阴影体积可得到目标模型留在体像素内部的体积,该材料系数为ε

由于FDTD使用的是平行六面体网格,本发明与Lumerical FDTD仿真软件在体积平均共形网格的生成速率方面做对比。具体实施方案为使用相同的STL文件导入模型,涉及圆环体和不规则物体,在相同的计算机环境下进行计算,对比本发明提出的方法与LumericalFDTD仿真软件完成计算所花费的时间。

如图12和图14分别表示由三角网建模得到的圆环体和玩具飞机模型,图13和图15分别为使用本发明方法得到的体像素模型,颜色越深的体像素表示目标模型在该体像素内的体积占比越大,颜色越浅体积占比越小。

使用本发明方法与Lumerical 软件FDTD模块volume average网格剖分技术对同一个圆环体的STL文件进行剖分,圆环体三角面元数量为4900个,剖分空间为立方体,三轴方向网格数相同,圆环体位于剖分空间的正中间,图16的横坐标为立方体边长上的网格数量,纵坐标为完成剖分所占用cpu的时间,仿真环境如下:cpu为Intel(R) Core(TM) i5-9400,Ram为16G,操作系统为Windows11。对比商业软件以及其发布版本:Ansys Lumerical2020 R2 FDTD Solver Version 8.24.2387 (Windows 64bit),对比软件的共形网格类型为volume average 。由于剖分的网格是用于FDTD计算的,故时间为计算三套极化网格所需的时间。从图16中可以看出,在同一模型网格剖分下,与商业软件Lumerical对比,本发明的方法在速度上超过Lumerical FDTD网格生成器,所用的时间明显更少。并且随着网格规模变大,其速度优势进一步体现出来,在对一个三角面元数量为4900的圆环体,在300*300*300个体像素网格中进行剖分,本发明的剖分速度超过Lumerical FDTD网格生成器的4倍,这归结于本发明拥有更少的计算复杂度,由于本发明从原模型通过精确计算体积信息,所以在计算中也不存在精度损失,生成的体积平均共形网格的精度没有来自估算和离散采样上的损失。

相关技术
  • 一种基于共形几何的数模表面网格生成方法
  • 一种基于三维CAD的FDTD共形网格自动生成方法及装置
  • 一种基于球面的3孔径三角形等面剖分网格编码方法
技术分类

06120115929088