CN118094668A - 一种自适应笛卡尔网格快速生成优化方法 - Google Patents
一种自适应笛卡尔网格快速生成优化方法 Download PDFInfo
- Publication number
- CN118094668A CN118094668A CN202410512840.XA CN202410512840A CN118094668A CN 118094668 A CN118094668 A CN 118094668A CN 202410512840 A CN202410512840 A CN 202410512840A CN 118094668 A CN118094668 A CN 118094668A
- Authority
- CN
- China
- Prior art keywords
- grid
- unit
- cartesian grid
- cartesian
- tree
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000005457 optimization Methods 0.000 title claims abstract description 14
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 19
- 238000004364 calculation method Methods 0.000 claims abstract description 10
- 238000000926 separation method Methods 0.000 claims abstract description 8
- 230000008569 process Effects 0.000 claims description 17
- 230000003044 adaptive effect Effects 0.000 claims description 13
- 230000011218 segmentation Effects 0.000 claims description 12
- 238000007654 immersion Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/15—Vehicle, aircraft or watercraft design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Automation & Control Theory (AREA)
- Aviation & Aerospace Engineering (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种自适应笛卡尔网格快速生成优化方法,包括:构建三维复杂外形物面几何模型STL文件;构建三维空间包围盒,使用三维空间包围盒建立KD树;将流场计算区域划分为等距笛卡尔网格;在KD树中进行距离查找,并使用基于分离轴理论的网格相交判定算法判断网格单元是否与物面相交并对相交的网格单元进行标记;在KD树中进行点查找,并对除去相交单元的笛卡尔网格进行内外判定,将不与物面相交的网格单元分类为完全处于物体内部的单元和完全处于流场中的单元;对包含相交单元在内的缓冲区进行各向同性加密;进行网格加密并判断单元种类。本发明能够快速且自动化生成适合浸入边界法的各向同性自适应笛卡尔网格。
Description
技术领域
本发明涉及三维绕流技术领域,具体涉及一种自适应笛卡尔网格快速生成优化方法。
背景技术
随着实际应用中物体结构复杂程度的提升,为降低计算流体力学数值模拟过程中网格生成部分的资源开销并缩短整体计算任务周期,减少人工干预,研究全自动,高效的笛卡尔网格生成算法具有重要意义。通常而言,笛卡尔网格的各向同性使得在相同的模拟精度下,笛卡尔网格的数量会明显高于贴体网格数目。而确定网格类型和壁面距离的计算过程涉及大量的数值计算,可以通过大规模并行技术来解决。但当几何外形很复杂、网格规模很大时,使用传统的遍历来实现的方法仍然会导致巨大的计算负担。对于内外单元的判断,已提出多种行之有效的方法,但仍然存在难以并行实现、计算量随网格规模增大剧增、特殊情况难以准确判断的问题。
目前三维绕流问题中存在很多复杂外形几何信息,面对这类复杂外形几何信息,尚未有有效的方法来快速生成适合浸入边界法的各向同性自适应笛卡尔网格。
专利公开号为CN116894282B的发明中公开了一种空间点集与多连通网格区域拓扑关系的识别方法及系统,该方法,通过辅助三角形的构造,对点集内元素与多连通网格区域的相对位置进行识别;以及,通过射线与辅助三角形最近交点进行属性分析。该发明解决了现有技术存在的可靠性低、鲁棒性差等问题。然而,该发明需要将网格区域分解至多个处理器,确定投影方向,将三维信息变成平面二维才能建树,采用射线法判断内外时需要经过N*M次判定,并且这些判定里包含了大量无用的相交判断,因此,该发明的空间点集与多连通网格区域拓扑关系的识别过程计算过程复杂,识别速度慢,难以将其应用在复杂外形几何信息的笛卡尔网格的快速生成上。
发明内容
本发明的目的是为了提供一种自适应笛卡尔网格快速生成优化方法,结合KD树的特点,提出了一种通过在KD中树进行物面距离查找来加速壁面计算和相交单元判断的算法,和一种通过在KD树中对投影点进行查找来加速内外单元判断的算法。同时,因投影方向的多种选择避免了传统射线法边穿过、拐点穿过导致重复计数的问题。本发明能够快速且自动化生成适合浸入边界法的各向同性自适应笛卡尔网格。
为实现上述技术目的,本发明采取的技术方案为:
一种自适应笛卡尔网格快速生成优化方法,所述快速生成优化方法包括以下步骤:
步骤1、基于三维绕流问题中存在的复杂外形几何信息,构建三维复杂外形物面几何模型STL文件;
步骤2、读取三维复杂外形物面几何模型STL文件中所有物面三角单元,同时得到每个三角单元三个维度的最大值和最小值,构建三维空间包围盒,使用三维空间包围盒建立KD树;
步骤3、将步骤1模型中的流场计算区域划分为等距笛卡尔网格,并作为几何自适应初始背景网格,即初始笛卡尔网格;
步骤4、将需要进行判断的笛卡尔网格单元,在KD树中进行距离查找,并使用基于分离轴理论的网格相交判定算法判断是否该笛卡尔网格单元与物面相交并对相交的笛卡尔网格单元进行标记并记录下相交三角形对应的序号,在查找结束时得到网格单元与物面的最近距离;
步骤5、在步骤4的基础上,对除去相交单元的笛卡尔网格,在KD树中进行点查找,并使用改进射线算法进行笛卡尔网格单元的内外判定,将不与物面三角单元相交的笛卡尔网格单元分类为完全处于物体内部的单元和完全处于流场中的单元;
步骤6、设立缓冲区,对包含相交单元在内的缓冲区进行各向同性加密;
步骤7、重复步骤4到步骤6进行网格加密并判断单元种类,重复加密次数与流场分辨率相关。
进一步地,步骤2中,KD树为K维的二叉树,其中的每一个节点都是K维的数据,数据结构包括{Node-data,Range,Split,Left,Right,Parent};Node-data表示数据集中的某个数据点,是K维矢量;Range表示节点所代表的空间范围;Split表示垂直于分割超平面的方向轴序号;Left表示由位于节点分割超平面左子空间内所有数据点所构成的KD树;Right表示由位于节点分割超平面右子空间内所有数据点所构成的KD树;Parent表示父节点。
进一步地,步骤2中,使用三维空间包围盒建立KD树时,数据点为三角单元包围盒,分割的方向轴根据当前节点的层数按x, y, z轴顺序更新,建立过程包括以下步骤:
步骤21、初始化分割轴,选取x轴;
步骤22、得到数据集的空间范围,初始化节点的空间范围;
步骤23、确定节点,对当前数据按分割轴维度进行检索,找到中位数数据,并将其放入到当前节点上;
步骤24、在当前分割轴维度,所有小于中位数的值划分到左支中,所有大于等于中位数的值划分到右支中;
步骤25、根据左支和右支的数据,更新左支和右支的空间范围;
步骤26、更新左支和右支的分割轴,根据节点的层数,按x, y, z轴顺序更新;
步骤27、对左支的数据进行处理,确定左支的子节点;对右支的数据进行处理,确定右支的子节点。
进一步地,步骤4中,将需要进行判断的笛卡尔网格单元,在KD树中进行距离查找的过程包括以下步骤:
步骤41、针对要判断的笛卡尔网格单元,选取相应的物面三角单元;其中,初始的笛卡尔网格单元进行判断时,随机选取一物面三角单元;其余由加密产生的新的笛卡尔网格单元进行判断时,选取上一级的笛卡尔网格单元距离最近的物面三角单元Knearest;
步骤42、计算要判断的笛卡尔网格单元到选取的物面三角单元的距离L;
步骤43、进入KD树开始查找;
步骤44、以网格单元中心坐标为原点,向x、y和z三个维度的正负两个方向均伸长L长度,做一笛卡尔网格单元包围盒;
步骤45、比较笛卡尔网格单元包围盒与当前节点存储的空间范围是否有重合,若没有重合区域,则停止向下查找,执行回溯操作;若有重合,则转入步骤46;
步骤46、比较L与H的大小,若L<H,则使用基于分离轴理论的网格相交判定算法判断是否笛卡尔网格单元与物面相交,H是一与网格尺寸有关的量,H=2h+maxh,其中h为当前笛卡尔网格单元尺寸,maxh为所有物面三角单元包围盒的最大尺寸;若判断为相交,将当前笛卡尔网格单元标记为相交单元;若当前节点不为叶子单元,则转入步骤47,向下进行前序查找;
步骤47、进入子树,计算笛卡尔网格单元与当前节点存储的物面三角单元的距离newh;若newh<L,则更新L和Knearest;
步骤48、重复步骤44至步骤47直到KD树查找结束;
步骤49、得到笛卡尔网格单元与物面的最短距离L和对应的最近的物面三角单元Knearest;若是相交单元,则查找结束时,当前笛卡尔网格单元标记为相交单元。
进一步地,需要进行判断的笛卡尔网格单元包括:初始笛卡尔网格单元、由相交单元加密产生的新的网格单元和由网格2:1平衡条件而产生的新的网格单元;
网格2:1平衡条件是指,相邻笛卡尔网格单元间边长之比不可大于2。
进一步地,在每一次加密操作后对全局网格进行平衡操作以产生新的网格单元,具体包括以下步骤:
对全局笛卡尔网格按边循环,对于不符合2:1平衡条件的网格,对边长大的一侧笛卡尔网格单元进行局部加密,直至符合2:1平衡条件,并对新生成的笛卡尔网格单元赋一标记。
进一步地,步骤5中,在步骤4的基础上,对除去相交单元的笛卡尔网格单元,在KD树中进行点查找,并使用改进射线算法进行网格内外判定的过程包括以下步骤:
步骤51、除去判断为相交单元的其余所有笛卡尔网格单元,得到新的需要判断的笛卡尔网格单元;
步骤52、选择投影方向,投影方向包括x,y,z轴正负方向共六个方向;
步骤53、将需要判断的笛卡尔网格单元的中心点O坐标向投影方向投影到流场边界,得到一个边界投影点O1和一个二维点O2;
步骤54、使用二维点O2在KD树中查找;查找过程包括:
步骤541、判断节点的空间范围在投影方向上是否包含二维点O2,若不包含,则停止向下查找转而进行回溯;若包含,则转入步骤542;
步骤542、继续判断节点存储的三角单元包围盒在投影方向上是否包含二维点O2,若包含,则转入步骤543,对该三角单元进行判断;
步骤543、连接中心点O和边界投影点O1做一线段,使用改进射线法判定线段是否穿过该三角单元,若穿过,判断线段是否从三角单元的边界或顶点穿过时,若是,转入步骤544,否则,线段与三角单元集合的相交次数加1;
步骤 544、更换投影方向为坐标轴正负方向中的其余方向,转入步骤53;
步骤 55、若当前节点不为叶子单元则进入子树,向下进行前序查找,转入步骤53,直至整个KD树查找结束;
步骤56、在KD树中查找结束后,若线段与三角单元集合的相交次数为偶数,则该笛卡尔网格单元处于物体外部,为流场单元;反之网格单元为内部单元。
与现有技术相比,本发明的有益效果如下:
本发明的目的是为了提供一种自适应笛卡尔网格快速生成优化方法,基于三维绕流问题中存在的几何信息,采用三角形组成的表面集合作为输入并生成三角单元包围盒来构建KD树。将笛卡尔网格单元在KD树中进行距离查找,并使用基于分离轴理论的网格相交判定算法判断是否与物面相交,同时查找结束得到物面距离,而后将需要判断内外的笛卡尔网格单元中点可选择的向不同方向流场边界投影作为参考点,在KD树中进行点查找,并连接中点和参考点使用改进射线算法进行内外判断;另外,采用基于单元的网格剖分方法对包含相交单元在内的缓冲区进行各向同性加密。因此,本发明可以快速且高效鲁棒地生成符合浸入边界方法和流场计算分辨率需要的自适应笛卡尔网格。
附图说明
图1为本发明的自适应笛卡尔网格快速生成优化方法流程图;
图2为 基于SU27机翼外形构造的自适应笛卡尔网格侧方向示意图;
图3为 基于SU27机翼外形构造的自适应笛卡尔网格进气道及导弹细节生成示意图;
图4为 基于SU27机翼外形构造的自适应笛卡尔网格斜方向示意图;
图5为KD树结构图;
图6为KD树构建的伪代码示意图;
图7为使用KD树加速相交判断及壁面距离的伪代码示意图;
图8为使用KD树优化内外判断的伪代码示意图。
实施方式
以下结合附图对本发明的实施例作进一步详细描述。
参见图1,本实施例公开了一种自适应笛卡尔网格快速生成优化方法,所述快速生成优化方法包括以下步骤:
步骤1、基于三维绕流问题中存在的复杂外形几何信息,构建三维复杂外形物面几何模型STL文件;
步骤2、读取三维复杂外形物面几何模型STL文件中所有物面三角单元,同时得到每个物面三角单元三个维度的最大值和最小值,构建三维空间包围盒,使用三维空间包围盒建立KD树;
步骤3、将步骤1模型中的流场计算区域划分为等距笛卡尔网格,并作为几何自适应初始背景网格,即初始笛卡尔网格;
步骤4、对笛卡尔网格中需要进行判断的笛卡尔网格单元,在KD树中进行查找,并使用基于分离轴理论的网格相交判定算法判断是否该笛卡尔网格单元与物面相交并对相交的笛卡尔网格单元进行标记并记录下相交三角形对应的序号,在查找结束时得到笛卡尔网格单元与物面的最近距离;
步骤5、在步骤4的基础上,对除去相交单元的笛卡尔网格单元,在KD树中进行点查找,并使用改进射线算法进行笛卡尔网格单元的内外判定,将不与物面三角单元相交的笛卡尔网格单元分类为完全处于物体内部的单元和完全处于流场中的单元;
步骤6、设立缓冲区,对包含相交单元在内的缓冲区进行各向同性加密;
步骤7、重复步骤4到步骤6进行网格加密并判断单元种类,重复加密次数与流场分辨率相关。
步骤2中, KD树的具体内容为:
KD树,是K维的二叉树,其中的每一个节点都是K维的数据,数据结构包括:
Node-data,数据集中的某个数据点,是K维矢量;
Range,该节点所代表的空间范围;
Split,垂直于分割超平面的方向轴序号。
Left,由位于该节点分割超平面左子空间内所有数据点所构成的KD树;
Right,由位于该节点分割超平面右子空间内所有数据点所构成的KD树;
Parent,父节点。
图5中以二维数据为例,给定随机分布的7个点(数字1-7代表的点),根据这七个点的几何位置创建来KD树,同时,每个节点所代表的区域范围Range如图5中红框所示。
步骤2中,使用三维空间包围盒建立KD树时,数据点为三角单元包围盒,分割的方向轴根据当前节点的层数按x轴、y轴和z轴顺序更新,建立过程包括以下步骤:
步骤21、初始化分割轴,选取x轴;例如,当前节点的层数为depth,分割轴Split=depth mod 3;Split=1则分割轴为x轴,Split=2则分割轴为y轴,Split=0则分割轴为z轴;该步骤中,因为根节点层数为1,所以选取的分割轴为x轴;
步骤22、得到数据集的空间范围,初始化节点的空间范围;
步骤23、确定节点,对当前数据按分割轴维度进行检索,找到中位数数据,并将其放入到当前节点上;
步骤24、划分双支:(1)划分左支,在当前分割轴维度,所有小于中位数的值划分到左支中;(2)划分右支,在当前分割轴维度,所有大于等于中位数的值划分到右支中;
步骤25、根据左右支的数据,更新左右支的空间范围;
步骤26、更新左右支的分割轴,根据节点的层数,按x轴、y轴和z轴顺序更新;
步骤27、确定子节点:(1)确定左节点:在左支的数据中进行与步骤23到步骤26相似的节点确认过程;(2)确定右节点:在右支的数据中进行与步骤23到步骤26相似的节点确认过程。图6为KD树构建的伪代码示意图。
步骤4中,对于需要进行判断的笛卡尔网格单元,在KD树中进行距离查找的具体内容为:
步骤41、针对要判断的网格单元,选取相应的物面三角单元;其中,初始的笛卡尔网格单元进行判断时,随机选取一物面三角单元,如选取根节点对应的三角单元;其余由加密产生的新的笛卡尔网格单元进行判断时,选取上一级的网格单元距离最近的物面三角单元Knearest。
步骤42、计算要判断的笛卡尔网格单元到选取的物面三角单元的距离L。
步骤43、进入KD树开始查找。
步骤44、以该笛卡尔网格单元中心坐标为原点,向x、y和z三个维度的两个方向均伸长L长度,做一网格单元包围盒。
步骤45、比较网格单元包围盒与当前节点存储的空间范围是否有重合,若没有重合区域,则该树停止向下查找,执行回溯操作。若有重合,则对该树继续向下查找。因为进行的是前序遍历,该子树停止向下了,在上层可能存在满足条件的右子树还未查询,所以进行回溯。
步骤46、比较L与H的大小,若L<H,则使用基于分离轴理论的网格相交判定算法判断是否笛卡尔网格单元与物面相交。H是一与网格尺寸有关的量,可取:
H=2h+maxh
其中h为当前笛卡尔网格单元尺寸,maxh为所有物面三角单元包围盒的最大尺寸;若判断为相交,将当前笛卡尔网格单元标记为相交单元;若当前节点不为叶子单元,则转入步骤47,向下进行前序查找;该步骤可以避免不必要的相交判断,提高查找速度。
步骤47、进入子树,计算笛卡尔网格单元与当前节点存储的物面三角单元的距离newh;若Newh<L,则更新L和Knearest。
步骤48、重复步骤44至步骤47直到KD树查找结束。
若是相交单元,则查找结束时,当前笛卡尔网格单元标记为相交单元。且无论是否为相交单元,查找结束时,均能得到笛卡尔网格单元与物面的最短距离L和对应的物面三角单元Knearest。图7是使用KD树加速相交判断及壁面距离计算的伪代码示意图。
步骤4中,需要进行判断的笛卡尔网格单元定义为:
(1) 初始笛卡尔网格单元;
(2)由相交单元加密产生的新单元;
(3)由网格2:1平衡条件而产生的新单元;
满足任意一条则需要进行判断。其余已经判断为流场或内部单元的笛卡尔网格单元不需要进行该操作,以避免在反复加密过程中对同一笛卡尔网格单元进行重复判断。同时,保证对流场中所有单元都进行了判断并得到笛卡尔网格单元与物面的最短距离;
网格2:1平衡条件是指,相邻笛卡尔网格单元间边长之比不可大于2,在每一次加密操作后对全局笛卡尔网格进行平衡操作;具体操作为:对全局笛卡尔网格按边循环,对于不符合2:1平衡条件的网格,对边长较大的一侧笛卡尔网格单元进行局部加密,直至符合2:1平衡条件,并对新生成的笛卡尔网格单元赋一标记。
步骤5中,在步骤4的基础上,对除去相交单元的笛卡尔网格单元,在KD树中进行点查找,并使用改进射线算法进行笛卡尔网格单元内外判定的过程包括以下步骤:
步骤51、除去判断为相交单元的其余所有笛卡尔网格单元,得到新的需要判断的网格单元;
步骤52、选择投影方向,如x轴正方向;
步骤53、将需要判断的笛卡尔网格单元中心点O坐标向投影方向投影到流场边界,得到一个边界投影点O1和一个二维点O2;
对于投影方向为x轴正方向的情况,O1坐标为(x_pos,y,z),O2坐标为(y,z);
其中x_pos为流场在x轴正方向的边界位置,x, y, z为网格中点坐标;
步骤54、使用二维点O2在KD树中查找。首先判断节点的空间范围在投影方向上是否包含O2,若不包含,则停止向下查找;若包含,则继续判断节点存储的三角单元包围盒在投影方向上是否包含O2,若不包含,则直接进入子树,向下查找;若包含,则需要对该三角单元进行判断;连接点O和O1做一线段,使用改进射线法判定线段是否穿过该三角单元,若穿过则计数。若当前节点不为叶子单元,则继续向下查找。
步骤 55、若当前节点不为叶子单元则进入子树,向下进行前序查找,转入步骤S54,直至KD树查找结束;
步骤56、在KD树中查找结束后,因流场边界点O1为一外部点,若上述线段与三角形集合的相交次数为偶数,则该正方体网格处于物体外部,为流场单元;反之则为内部单元;
在步骤54中,若判断线段是从三角单元的边界或顶点穿过时,此时会出现重复计数,导致内外判断出错。该种情况下,则此次KD树查找结束,更换投影方向为x, y, z轴正负方向中的其余方向,重复步骤53至步骤55以避免错误的内外判断。
步骤5中,需要进行判断的网格单元定义为,在步骤4需要进行判断的网格单元的基础上,在进行完步骤4后,除去判断为相交单元的其余所有单元。图8是使用KD树优化内外判断的伪代码示意图。
下面给出SU-27战斗机模型作为本发明所公开方法的具体实施例。
带有进气道及导弹的翼身融合体SU-27模型三维非贴体自适应笛卡尔网格生成结果如图2-图4所示。本实施例为验证算法鲁棒性,考虑空心壳体、凹面等复杂外形,以保留导弹的SU-27模型作为输入对象,进行自适应笛卡尔网格的生成。当前SU-27模型表面由548042个三角形构成,在机身前缘,翼尖等几何变化较大处分布较密,共计进行6次几何自适应操作,缓冲因子α取6,网格数量为2486万,采用48核并行。表1为使用KD树和不使用KD树对应的运行时间对比结果。
表1
本发明的KD树是均衡的且按照x,y,z位置来划分的树,同时,向坐标方向投影可以确定射线穿过哪些物面单元,将时间复杂度进一步降到0(1),即使物面网格量激增,也只需做个位数的相交判断,来避免无用的相交判断,而且投影方向可以人工任意选取。由表1可知,结合KD树来进行相交或者内外判断可以很好的提高判断速度,减少网格生成的时间,使用KD树加上向坐标方向投影可以大大提高判断速度。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器运行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上运行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上运行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (7)
1.一种自适应笛卡尔网格快速生成优化方法,其特征在于,所述快速生成优化方法包括以下步骤:
步骤1、基于三维绕流问题中存在的复杂外形几何信息,构建三维复杂外形物面几何模型STL文件;
步骤2、读取三维复杂外形物面几何模型STL文件中所有物面三角单元,同时得到每个三角单元三个维度的最大值和最小值,构建三维空间包围盒,使用三维空间包围盒建立KD树;
步骤3、将步骤1模型中的流场计算区域划分为等距笛卡尔网格,并作为几何自适应初始背景网格,即初始笛卡尔网格;
步骤4、将需要进行判断的笛卡尔网格单元,在KD树中进行距离查找,并使用基于分离轴理论的网格相交判定算法判断是否该笛卡尔网格单元与物面相交并对相交的笛卡尔网格单元进行标记并记录下相交三角形对应的序号,在查找结束时得到网格单元与物面的最近距离;
步骤5、在步骤4的基础上,对除去相交单元的笛卡尔网格,在KD树中进行点查找,并使用改进射线算法进行笛卡尔网格单元的内外判定,将不与物面三角单元相交的笛卡尔网格单元分类为完全处于物体内部的单元和完全处于流场中的单元;
步骤6、设立缓冲区,对包含相交单元在内的缓冲区进行各向同性加密;
步骤7、重复步骤4到步骤6进行网格加密并判断单元种类,重复加密次数与流场分辨率相关。
2.根据权利要求1所述的自适应笛卡尔网格快速生成优化方法,其特征在于,步骤2中,KD树为K维的二叉树,其中的每一个节点都是K维的数据,数据结构包括{Node-data,Range,Split,Left,Right,Parent};Node-data表示数据集中的某个数据点,是K维矢量;Range表示节点所代表的空间范围;Split表示垂直于分割超平面的方向轴序号;Left表示由位于节点分割超平面左子空间内所有数据点所构成的KD树;Right表示由位于节点分割超平面右子空间内所有数据点所构成的KD树;Parent表示父节点。
3.根据权利要求1所述的自适应笛卡尔网格快速生成优化方法,其特征在于,步骤2中,使用三维空间包围盒建立KD树时,数据点为三角单元包围盒,分割的方向轴根据当前节点的层数按x, y, z轴顺序更新,建立过程包括以下步骤:
步骤21、初始化分割轴,选取x轴;
步骤22、得到数据集的空间范围,初始化节点的空间范围;
步骤23、确定节点,对当前数据按分割轴维度进行检索,找到中位数数据,并将其放入到当前节点上;
步骤24、在当前分割轴维度,所有小于中位数的值划分到左支中,所有大于等于中位数的值划分到右支中;
步骤25、根据左支和右支的数据,更新左支和右支的空间范围;
步骤26、更新左支和右支的分割轴,根据节点的层数,按x, y, z轴顺序更新;
步骤27、对左支的数据进行处理,确定左支的子节点;对右支的数据进行处理,确定右支的子节点。
4.根据权利要求1所述的自适应笛卡尔网格快速生成优化方法,其特征在于,步骤4中,将需要进行判断的笛卡尔网格单元,在KD树中进行距离查找的过程包括以下步骤:
步骤41、针对要判断的笛卡尔网格单元,选取相应的物面三角单元;其中,初始的笛卡尔网格单元进行判断时,随机选取一物面三角单元;其余由加密产生的新的笛卡尔网格单元进行判断时,选取上一级的笛卡尔网格单元距离最近的物面三角单元Knearest;
步骤42、计算要判断的笛卡尔网格单元到选取的物面三角单元的距离L;
步骤43、进入KD树开始查找;
步骤44、以网格单元中心坐标为原点,向x、y和z三个维度的正负两个方向均伸长L长度,做一笛卡尔网格单元包围盒;
步骤45、比较笛卡尔网格单元包围盒与当前节点存储的空间范围是否有重合,若没有重合区域,则停止向下查找,执行回溯操作;若有重合,则转入步骤46;
步骤46、比较L与H的大小,若L<H,则使用基于分离轴理论的网格相交判定算法判断是否笛卡尔网格单元与物面相交,H是一与网格尺寸有关的量,H=2h+maxh,其中h为当前笛卡尔网格单元尺寸,maxh为所有物面三角单元包围盒的最大尺寸;若判断为相交,将当前笛卡尔网格单元标记为相交单元;若当前节点不为叶子单元,则转入步骤47,向下进行前序查找;
步骤47、进入子树,计算笛卡尔网格单元与当前节点存储的物面三角单元的距离newh;若newh<L,则更新L和Knearest;
步骤48、重复步骤44至步骤47直到KD树查找结束;
步骤49、得到笛卡尔网格单元与物面的最短距离L和对应的最近的物面三角单元Knearest;若是相交单元,则查找结束时,当前笛卡尔网格单元标记为相交单元。
5.根据权利要求1所述的自适应笛卡尔网格快速生成优化方法,其特征在于,需要进行判断的笛卡尔网格单元包括:初始笛卡尔网格单元、由相交单元加密产生的新的网格单元和由网格2:1平衡条件而产生的新的网格单元;
网格2:1平衡条件是指,相邻笛卡尔网格单元间边长之比不可大于2。
6.根据权利要求5所述的自适应笛卡尔网格快速生成优化方法,其特征在于,在每一次加密操作后对全局网格进行平衡操作以产生新的网格单元,具体包括以下步骤:
对全局笛卡尔网格按边循环,对于不符合2:1平衡条件的网格,对边长大的一侧笛卡尔网格单元进行局部加密,直至符合2:1平衡条件,并对新生成的笛卡尔网格单元赋一标记。
7.根据权利要求1所述的自适应笛卡尔网格快速生成优化方法,其特征在于,步骤5中,在步骤4的基础上,对除去相交单元的笛卡尔网格单元,在KD树中进行点查找,并使用改进射线算法进行网格内外判定的过程包括以下步骤:
步骤51、除去判断为相交单元的其余所有笛卡尔网格单元,得到新的需要判断的笛卡尔网格单元;
步骤52、选择投影方向,投影方向包括x,y,z轴正负方向共六个方向;
步骤53、将需要判断的笛卡尔网格单元的中心点O坐标向投影方向投影到流场边界,得到一个边界投影点O1和一个二维点O2;
步骤54、使用二维点O2在KD树中查找;查找过程包括:
步骤541、判断节点的空间范围在投影方向上是否包含二维点O2,若不包含,则停止向下查找转而进行回溯;若包含,则转入步骤542;
步骤542、继续判断节点存储的三角单元包围盒在投影方向上是否包含二维点O2,若包含,则转入步骤543,对该三角单元进行判断;
步骤543、连接中心点O和边界投影点O1做一线段,使用改进射线法判定线段是否穿过该三角单元,若穿过,判断线段是否从三角单元的边界或顶点穿过时,若是,转入步骤544,否则,线段与三角单元集合的相交次数加1;
步骤 544、更换投影方向为坐标轴正负方向中的其余方向,转入步骤53;
步骤 55、若当前节点不为叶子单元则进入子树,向下进行前序查找,转入步骤53,直至整个KD树查找结束;
步骤56、在KD树中查找结束后,若线段与三角单元集合的相交次数为偶数,则该笛卡尔网格单元处于物体外部,为流场单元;反之网格单元为内部单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410512840.XA CN118094668B (zh) | 2024-04-26 | 2024-04-26 | 一种自适应笛卡尔网格快速生成优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410512840.XA CN118094668B (zh) | 2024-04-26 | 2024-04-26 | 一种自适应笛卡尔网格快速生成优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118094668A true CN118094668A (zh) | 2024-05-28 |
CN118094668B CN118094668B (zh) | 2024-08-09 |
Family
ID=91153680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410512840.XA Active CN118094668B (zh) | 2024-04-26 | 2024-04-26 | 一种自适应笛卡尔网格快速生成优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118094668B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060089803A1 (en) * | 2002-12-27 | 2006-04-27 | Riken | Method and device for numberical analysis of flow field of non-compressive viscous fluid, directly using v-cad data |
CN113505443A (zh) * | 2021-09-09 | 2021-10-15 | 南京航空航天大学 | 一种任意外形的三维绕流问题自适应笛卡尔网格生成方法 |
CN115828774A (zh) * | 2022-10-12 | 2023-03-21 | 苏州流场信息技术有限公司 | 一种基于区域生长的笛卡尔网格生成算法 |
CN116822160A (zh) * | 2023-06-05 | 2023-09-29 | 中国人民解放军国防科技大学 | 一种笛卡尔网格生成方法、装置、设备及介质 |
-
2024
- 2024-04-26 CN CN202410512840.XA patent/CN118094668B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060089803A1 (en) * | 2002-12-27 | 2006-04-27 | Riken | Method and device for numberical analysis of flow field of non-compressive viscous fluid, directly using v-cad data |
CN113505443A (zh) * | 2021-09-09 | 2021-10-15 | 南京航空航天大学 | 一种任意外形的三维绕流问题自适应笛卡尔网格生成方法 |
CN115828774A (zh) * | 2022-10-12 | 2023-03-21 | 苏州流场信息技术有限公司 | 一种基于区域生长的笛卡尔网格生成算法 |
CN116822160A (zh) * | 2023-06-05 | 2023-09-29 | 中国人民解放军国防科技大学 | 一种笛卡尔网格生成方法、装置、设备及介质 |
Non-Patent Citations (2)
Title |
---|
肖涵山, 陈作斌, 刘刚, 江雄: "基于Euler方程的三维自适应笛卡尔网格应用研究", 空气动力学学报, no. 02, 28 June 2003 (2003-06-28), pages 76 - 84 * |
胡偶;赵宁;刘剑明;王东红;: "基于有限体积格式的自适应笛卡尔网格虚拟单元方法及其应用", 空气动力学学报, no. 04, 15 August 2011 (2011-08-15), pages 93 - 97 * |
Also Published As
Publication number | Publication date |
---|---|
CN118094668B (zh) | 2024-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101944239B (zh) | 三维模型分割方法、装置以及包含该装置的图像处理系统 | |
EP3435335A1 (en) | Hybrid hierarchy for ray tracing | |
CN105793848B (zh) | 包括建模步骤的计算机辅助设计方法 | |
CN103714577B (zh) | 一种适用于带纹理模型的三维模型简化方法 | |
CN115661374B (zh) | 一种基于空间划分和模型体素化的快速检索方法 | |
CN108171793B (zh) | 一种探查层叠区域三角网格的方法 | |
CN111243094B (zh) | 一种基于点灯法的三维模型精确体素化方法 | |
CN116452583B (zh) | 点云缺陷检测方法、装置、系统及存储介质 | |
CN101853526A (zh) | 一种自适应密度的非均匀点云简化处理方法 | |
US10083264B1 (en) | Systems and methods for implicit surface modeling | |
CN113610983A (zh) | 一种离散点空间曲面三角网格自动剖分方法 | |
CN115758938A (zh) | 面向粘性边界流场数值模拟的附面层网格生成方法 | |
CN117473655B (zh) | 基于边坍缩网格优化的飞行器仿真驱动设计方法和装置 | |
US7333104B2 (en) | Method and program of converting three-dimensional shape data into cell internal data | |
CN109685844B (zh) | 一种编织网格标记和方向校准优化方法及装置 | |
CN118094668B (zh) | 一种自适应笛卡尔网格快速生成优化方法 | |
CN115346005B (zh) | 基于嵌套包围盒概念用于物面网格的数据结构构建方法 | |
Hu et al. | Parallel BVH construction using locally density clustering | |
Huang et al. | A matching algorithm between precursory 3D process model and 2D working procedure drawing based on subgraph isomorphism | |
CN110349265B (zh) | 一种四面体拓扑网格生成方法及电子设备 | |
Khamayseh et al. | Use of the spatial kD-tree in computational physics applications | |
Zhang et al. | Machining Simulation Application Based on Improved Marching Cubes Algorithm | |
CN111696111A (zh) | 一种基于ssdf衰减图聚类的3d模型网格分割方法 | |
CN117437378B (zh) | 一种基于四边形的网格生成方法、系统、设备和介质 | |
CN112509156B (zh) | 基于ug的轮胎花纹快速编辑系统及其方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |