一种三维网格模型的网格质量优化方法与流程
未命名
09-07
阅读:140
评论:0
1.本发明涉及网格质量优化技术领域,尤其涉及一种三维网格模型的网格质量优化方法。
背景技术:
2.在cae领域,网格质量好坏直接影响到求解能否收敛及收敛速度,网格质量优化是提升网格质量的关键技术之一。目前主要存在两种技术,基于最优化模型的优化及基于拓扑的优化,拓扑优化(改变节点连接关系)因为计算速度快,鲁棒性高被广泛使用。然而仅仅改变连接关系对于网格质量提升效果十分有限,需要结合最优化模型使用。最优化模型的限制为时间复杂度高,计算费时,易形成非法网格。因此,研究如何提升最优化模型的计算速度和避免形成非法网格的算法十分重要。
技术实现要素:
3.鉴于上述的分析,本发明实施例旨在提供一种三维网格模型的网格质量优化方法,用以解决现有网格质量优化时间复杂度高、易形成非法网格的问题。
4.一方面,本发明实施例提供了一种三维网格模型的网格质量优化方法,包括以下步骤:
5.计算三维网格模型每个体单元的质量,基于每个体单元的质量构建待优化节点集合;
6.对待优化节点集合中的每个待优化节点构建带惩罚项约束的目标函数;
7.基于目标函数采用松弛牛顿迭代优化方法对待优化节点集合中的待优化节点进行优化。
8.基于上述方法的进一步改进,对待优化节点集合中的每个待优化节点构建带惩罚项约束的目标函数,包括:
9.对于每个待优化节点,以与其邻接的体单元作为目标优化区域,以最大化目标优化区域中最小质量的体单元的质量为优化目标,构建待惩罚约束的目标函数。
10.基于上述方法的进一步改进,所述目标函数为:
[0011][0012]
f(x)=min(qi),i=1,
…
,n;
[0013]
其中,x表示当前待优化节点的位置,n表示当前待优化节点的邻接体单元的数量,σ表示优化参数,ci(x)表示当前待优化节点的第i个邻接体单元的体积,qi表示当前待优化节点的第i个邻接体单元的质量。
[0014]
基于上述方法的进一步改进,基于目标函数采用松弛牛顿迭代优化方法对待优化节点集合中的待优化节点进行优化,包括:
[0015]
基于当前待优化节点的邻接体单元的体积计算当前待优化节点的体积加权点;将当前待优化节点挪动至体积加权点作为迭代初始点;
[0016]
从迭代初始点开始,基于目标函数采用松弛牛顿迭代优化方法对当前待优化节点进行迭代优化。
[0017]
基于上述方法的进一步改进,采用以下公式计算当前待优化节点的体积加权点p0:
[0018][0019]
其中,表示当前待优化节点的第i个邻接体单元的中心点,vi表示当前待优化节点的第i个邻接体单元的体积,n表示当前待优化节点的邻接体单元的数量。
[0020]
基于上述方法的进一步改进,从迭代初始点开始,基于目标函数采用松弛牛顿迭代优化方法对当前待优化节点进行迭代优化,包括:
[0021]
根据目标函数采用松弛迭代公式根据目标函数采用松弛迭代公式对当前待优化节点进行迭代优化使当前待优点快速接近目标位置;
[0022]
根据目标函数采用牛顿迭代公式进行牛顿迭代,得到当前待优化节点的最终位置;
[0023]
其中,表示当前待优化节点第k次松弛迭代的位置,表示当前待优化节点第k+1次松弛迭代的位置,α表示迭代步长,ω表示松弛因子,表示当前待优化节点第k次牛顿迭代的位置,表示当前待优化节点第k+1次牛顿迭代的位置,h-1表示海森矩阵的逆矩阵,表示当前待优化节点第k次牛顿迭代的梯度。
[0024]
基于上述方法的进一步改进,每次迭代前采用改进的line-search确定迭代步长。
[0025]
基于上述方法的进一步改进,采用以下方式计算三维网格模型每个体单元的质量:
[0026]
计算体单元的质心和每个面的几何中心;根据质心和每个面的几何中心计算质心指向各面几何中心的矢量;
[0027]
计算体单元每个面的面外法向矢量;
[0028]
采用以下公式计算体单元的质量:
[0029]
q=min(q
fi
),i=0,
…
,nf-1,
[0030][0031]
其中,di表示体单元质心指向第i个面的几何中心的矢量,表示体单元第i个面的面外法向矢量,nf表示体单元面的数量。
[0032]
基于上述方法的进一步改进,基于每个体单元的质量构建待优化网格节点集合,包括:
[0033]
从质量小于第一阈值的每个体单元中随机选取未优化过的一个节点加入待优化节点集合中构建待优化网格节点集合。
[0034]
基于上述方法的进一步改进,对待优化节点集合中不共边的待优化节点可采用并行优化的方式同时进行优
[0035]
与现有技术相比,本实施例提供的三维网格模型的网格质量优化方法,通过构建
带惩罚项约束的目标函数可以在优化过程中避免出现非法网格,通过采用松弛牛顿迭代法可以快速对待优化节点进行迭代,从而实现快速的网格质量优化。
[0036]
本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
附图说明
[0037]
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件;
[0038]
图1为本发明实施例三维网格模型的网格质量优化方法的流程图;
[0039]
图2为本发明实施例的锥体分割示意图。
[0040]
附图标记:
[0041]
1-锥体的分割点。
具体实施方式
[0042]
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本技术一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
[0043]
本发明的一个具体实施例,公开了一种三维网格模型的网格质量优化方法,如图1所示,包括以下步骤:
[0044]
s1、计算三维网格模型每个体单元的质量,基于每个体单元的质量构建待优化节点集合;
[0045]
s2、对待优化节点集合中的每个待优化节点构建带惩罚项约束的目标函数;
[0046]
s3、基于目标函数采用松弛牛顿迭代优化方法对待优化节点集合中的待优化节点进行优化。
[0047]
与现有技术相比,本实施例提供的三维网格模型的网格质量优化方法,通过构建带惩罚项约束的目标函数可以在优化过程中避免出现非法网格,通过采用松弛牛顿迭代法可以快速对待优化节点进行迭代,从而实现快速的网格质量优化。
[0048]
具体的,步骤s1中采用以下方式计算三维网格模型每个体单元的质量:
[0049]
s11、计算体单元的质心和每个面的几何中心;根据质心和每个面的几何中心计算质心指向各面几何中心的矢量;
[0050]
s12、计算体单元每个面的面外法向矢量;
[0051]
s13、采用以下公式计算体单元的质量:
[0052]
q=min(q
fi
),i=0,
…
,nf-1,
[0053][0054]
其中,di表示体单元质心指向第i个面的几何中心的矢量,表示体单元第i个面的面外法向矢量,nf表示体单元面的数量。
[0055]
实施时,步骤s11中,对于四面体单元,采用以下公式计算其质心c
elem
,其中,v0、v1、v2、v3表示四面体的顶点,
[0056][0057]
对于其他复杂的体单元,先将其分割成多个四面体单元,再使用四面体质心计算公式计算出每个四面体单元的质心和体积,根据分割出来的四面体的质心和体积计算原体单元的质心。例如图2所示的锥体,分割点c
split
为四边形面的几何中心:
[0058][0059]
其中,v0、v1、v2、v3表示四边形面的顶点。
[0060]
其他类型的体单元的分割点c
split
为体单元的几何中心:
[0061][0062]
其中,nvertex表示体单元的顶点的数量,vi表示体单元的第i个顶点,i=0,...nvertex-1。
[0063]
分割后的每个四面体单元的质心可采用前述四面体质心计算公式计算得到,记为c
ielem
,每个四面体的体积记为v
ielem
。
[0064]
原体单元的质心c
elem
采用以下公式计算:
[0065][0066]
其中,k表示分割的四面体的数量。
[0067]
体单元每个面的几何中心采用以下公式计算:
[0068][0069]
其中,v
ij
表示体单元第i个面的第j个顶点。inode表示第i个面的顶点数量,ci表示体单元第i个面的几何中心。
[0070]
质心指向各面几何中心的矢量di=c
i-c
elem
。
[0071]
步骤s12中采用以下方式计算面外法向矢量。
[0072]
对于四面体、五面体和六面体网格单元,其面为三角形或四边形。
[0073]
三角形的面外法向矢量为按照逆时针方向两边矢量的叉乘:
[0074][0075]
其中,e1和e2表示三角形逆时针方向相连的两条边矢量。
[0076]
四边形面的几何中心ci与四边形的顶点连线把四边形分成4个三角形,按照前述公式计算每个三角形的法向矢量四边形的面外法向矢量为:
[0077]
[0078]
对于其他多边形面,首先通过多边形面的质心与各顶点的连线将多边形面分为若干三角形,按照前述公式计算每个三角形的法向矢量多边形面的面外法向矢量为:
[0079][0080]
得到质心指向各面几何中心的矢量di和每个面的面外法向矢量后,采用步骤s13中的公式计算体单元的质量q。
[0081]
实施时,对于四面体网格单元,也可采用以下公式计算其质量:
[0082][0083]
其中,v表示四面体的体积,li表示四面体第i个边,常数k的取值为单位正四面体在q=1时对应的值。
[0084]
计算模型每个体单元的质量后,基于每个体单元的质量构建待优化网格节点集合,具体包括:
[0085]
从质量小于第一阈值的每个体单元中随机选取未优化过的一个节点加入待优化节点集合中构建待优化网格节点集合。
[0086]
例如,模型有n个低质量体单元,从每个低质量体单元中任意选取一个未优化过的顶点,构成待优化节点集合。
[0087]
具体的,步骤s2中对待优化节点集合中的每个待优化节点构建带惩罚项约束的目标函数,包括:
[0088]
对于每个待优化节点,以与其邻接的体单元作为目标优化区域,以最大化目标优化区域中最小质量的体单元的质量为优化目标,构建待惩罚约束的目标函数。
[0089]
优化的目标为最大化待优化节点对应的目标优化区域的最低网格质量。即目标函数为最大化f(x):
[0090]
f(x)=min(qi),i=1,
…
,n
[0091]
其中,x表示待优化节点的位置,n表示当前待优化节点的邻接体单元的数量,qi表示当前待优化节点的第i个邻接体单元的质量。
[0092]
为了避免优化过程中产生非法网格,在优化函数中添加惩罚项约束,惩罚项约束使得当前待优化节点所有邻接体单元体积大于零,保证优化过程中不产生非法单元。在优化过程中,如果产生负体积,惩罚项会生效,并让下次移动节点方向向正体积方向移动。
[0093]
因此,最终的目标函数为:
[0094][0095]
f(x)=min(qi),i=1,
…
,n;
[0096]
其中,x表示当前待优化节点的位置,n表示当前待优化节点的邻接体单元的数量,σ表示优化参数,ci(x)表示当前待优化节点的第i个邻接体单元的体积,qi表示当前待优化节点的第i个邻接体单元的质量。优化参数σ量级等于或略小于f(x),邻接体单元的体积为正时第二项不等式约束为零,即惩罚项为0。
[0097]
为了加快优化过程,快速逼近优化目标,步骤s3中,基于目标函数采用松弛牛顿迭
代优化方法对待优化节点集合中的待优化节点进行优化,包括:
[0098]
s31、基于当前待优化节点的邻接体单元的体积计算当前待优化节点的体积加权点;将当前待优化节点挪动至体积加权点作为迭代初始点;
[0099]
s32、从迭代初始点开始,基于目标函数采用松弛牛顿迭代优化方法对当前待优化节点进行迭代优化。
[0100]
具体的,步骤s31中采用以下公式计算当前待优化节点的体积加权点p0:
[0101][0102]
其中,表示当前待优化节点的第i个邻接体单元的中心点,vi表示当前待优化节点的第i个邻接体单元的体积,n表示当前待优化节点的邻接体单元的数量。
[0103]
将当前待优化节点首先挪至体积加权点的位置,从而对于扁平的体单元具有更好的调节作用,减少迭代步数,加速收敛。
[0104]
得到迭代初始点后,步骤s32中从迭代初始点开始,基于目标函数采用松弛牛顿迭代优化方法对当前待优化节点进行迭代优化,具体包括:
[0105]
s321、根据目标函数采用松弛迭代公式s321、根据目标函数采用松弛迭代公式对当前待优化节点进行迭代优化使当前待优点快速接近目标位置;
[0106]
s322、根据目标函数采用牛顿迭代公式进行牛顿迭代,得到当前待优化节点的最终位置;
[0107]
其中,表示当前待优化节点第k次松弛迭代的位置,表示当前待优化节点第k+1次松弛迭代的位置,α表示迭代步长,ω表示松弛因子,表示当前待优化节点第k次牛顿迭代的位置,表示当前待优化节点第k+1次牛顿迭代的位置,h-1表示海森矩阵的逆矩阵,表示当前待优化节点第k次牛顿迭代的梯度。
[0108]
在每次迭代前,需要首先确定迭代步长。实施时,采用改进的line-search确定迭代步长。
[0109]
初始时,根据经验设置迭代步长α的初值,搜索参数c1,line-search的迭代变量x设置为当前待优化节点的体积加权点的位置。
[0110]
令
[0111]
f1=l(x)+α*c1*pg
[0112]
x1=x+p
[0113]
f2=l(x1)
[0114]
若f2≤f1,则α=α*τ,将x1的值赋给x,重新计算f1和f2进行比较。否则,停止循环,当前α即为改进的line-search确定的迭代步长。若循环超过预先设定的次数,停止循环,当前α即为改进的line-search确定的迭代步长。实施时,τ取0.5,g为梯度,p表示搜索方向,根据梯度得到。
[0115]
通过改进的line-search先进行一轮的循环确定迭代的步长,保证该迭代步长会让网格质量增长。此处为加速算法对line-search主要有两点改动:根据经验选择经验参数c1和α初始值,相比修改前速度有提升;只需要f2>f1 armijo condition(充分下降条件)判断,不需要curvation condition(曲率条件)的判断,从而实现加速计算,快速确定迭代
步长。
[0116]
当梯度较大时牛顿迭代法很难二次收敛,为了进一步加快迭代,迭代分为两个阶段,首先采用松弛迭代公式进行迭代优化,使当前待优点快速接近目标位置,再通过牛顿迭代确定最终位置。
[0117]
从line-search可以看出,α是以二分法回溯寻找(τ=0.5),所以line-search找到的α不一定是最佳的步长,最佳步长有可能小于也可能大于该值。因此,步骤s331在迭代时引入松弛因子ω,根据经验调整,优选取0.1~0.5。
[0118]
当梯度小于预先设置的阈值或步长α小于预先设置的阈值,则松弛迭代结束,此时当前待优化节点已接近目标位置,转用牛顿迭代法进行迭代优化,从而确定当前待优化节点的最终优化位置。
[0119]
实施时,牛顿迭代中的梯度和海森矩阵h采用中心差分法计算得到。当梯度小于预先设置的阈值或两次迭代位置变化小于预先设置的阈值或迭代超过次数则停止迭代,得到当前待优化节点的最终位置。
[0120]
当前待优化节点优化后继续进行待优化节点集合中下一个节点的优化,直至集合中所有节点都优化完后,清空待优化节点结集合。
[0121]
为了进一步加快优化过程,对待优化节点集合中不共边的待优化节点可采用并行优化的方式同时进行优化。
[0122]
待优化节点集合中所有节点都优化后,再次计算所有体单元的质量,可能仍存在质量较低的体单元,此时,可按照步骤s1中的方式从质量小于第一阈值的每个体单元中随机选取未优化过的一个节点加入待优化节点集合中重新构建待优化网格节点集合,对集合中的节点进行优化,直至不存在质量小于第一阈值的体单元,或所有质量小于第一阈值的体单元中不存在未优化过的节点。
[0123]
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
[0124]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
技术特征:
1.一种三维网格模型的网格质量优化方法,其特征在于,包括以下步骤:计算三维网格模型每个体单元的质量,基于每个体单元的质量构建待优化节点集合;对待优化节点集合中的每个待优化节点构建带惩罚项约束的目标函数;基于目标函数采用松弛牛顿迭代优化方法对待优化节点集合中的待优化节点进行优化。2.根据权利要求1所述的三维网格模型的网格质量优化方法,其特征在于,对待优化节点集合中的每个待优化节点构建带惩罚项约束的目标函数,包括:对于每个待优化节点,以与其邻接的体单元作为目标优化区域,以最大化目标优化区域中最小质量的体单元的质量为优化目标,构建待惩罚约束的目标函数。3.根据权利要求1所述的三维网格模型的网格质量优化方法,其特征在于,所述目标函数为:f(x)=min(q
i
),i=1,
…
,n;其中,x表示当前待优化节点的位置,n表示当前待优化节点的邻接体单元的数量,σ表示优化参数,c
i
(x)表示当前待优化节点的第i个邻接体单元的体积,q
i
表示当前待优化节点的第i个邻接体单元的质量。4.根据权利要求1所述的三维网格模型的网格质量优化方法,其特征在于,基于目标函数采用松弛牛顿迭代优化方法对待优化节点集合中的待优化节点进行优化,包括:基于当前待优化节点的邻接体单元的体积计算当前待优化节点的体积加权点;将当前待优化节点挪动至体积加权点作为迭代初始点;从迭代初始点开始,基于目标函数采用松弛牛顿迭代优化方法对当前待优化节点进行迭代优化。5.根据权利要求4所述的三维网格模型的网格质量优化方法,其特征在于,采用以下公式计算当前待优化节点的体积加权点p0:其中,表示当前待优化节点的第i个邻接体单元的中心点,v
i
表示当前待优化节点的第i个邻接体单元的体积,n表示当前待优化节点的邻接体单元的数量。6.根据权利要求4所述的三维网格模型的网格质量优化方法,其特征在于,从迭代初始点开始,基于目标函数采用松弛牛顿迭代优化方法对当前待优化节点进行迭代优化,包括:根据目标函数采用松弛迭代公式根据目标函数采用松弛迭代公式对当前待优化节点进行迭代优化使当前待优点快速接近目标位置;根据目标函数采用牛顿迭代公式进行牛顿迭代,得到当前待优化节点的最终位置;其中,表示当前待优化节点第k次松弛迭代的位置,表示当前待优化节点第k+1次松弛迭代的位置,α表示迭代步长,ω表示松弛因子,表示当前待优化节点第k次牛
顿迭代的位置,表示当前待优化节点第k+1次牛顿迭代的位置,h-1
表示海森矩阵的逆矩阵,表示当前待优化节点第k次牛顿迭代的梯度。7.根据权利要求6所述的三维网格模型的网格质量优化方法,其特征在于,每次迭代前采用改进的line-search确定迭代步长。8.根据权利要求1所述的三维网格模型的网格质量优化方法,其特征在于,采用以下方式计算三维网格模型每个体单元的质量:计算体单元的质心和每个面的几何中心;根据质心和每个面的几何中心计算质心指向各面几何中心的矢量;计算体单元每个面的面外法向矢量;采用以下公式计算体单元的质量:q=min(q
fi
),i=0,
…
,nf-1,其中,d
i
表示体单元质心指向第i个面的几何中心的矢量,表示体单元第i个面的面外法向矢量,nf表示体单元面的数量。9.根据权利要求1所述的三维网格模型的网格质量优化方法,其特征在于,基于每个体单元的质量构建待优化网格节点集合,包括:从质量小于第一阈值的每个体单元中随机选取未优化过的一个节点加入待优化节点集合中构建待优化网格节点集合。10.根据权利要求1所述的三维网格模型的网格质量优化方法,其特征在于,对待优化节点集合中不共边的待优化节点可采用并行优化的方式同时进行优化。
技术总结
本发明涉及一种三维网格模型的网格质量优化方法,属于网格质量优化技术领域,解决了现有技术中优化时间复杂度高、易形成非法网格的问题。方法包括以下步骤:计算三维网格模型每个体单元的质量,基于每个体单元的质量构建待优化节点集合;对待优化节点集合中的每个待优化节点构建带惩罚项约束的目标函数;基于目标函数采用松弛牛顿迭代优化方法对待优化节点集合中的待优化节点进行优化。实现了网格质量的快速优化并且不易产生非法网格。量的快速优化并且不易产生非法网格。量的快速优化并且不易产生非法网格。
技术研发人员:王浩源 段忠祥
受保护的技术使用者:安世亚太科技股份有限公司
技术研发日:2023.06.25
技术公布日:2023/9/6
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
