发明名称 具有任意内部特征约束的几何模型的四边形网格生成方法
摘要 本发明涉及一种内部存在任意特征约束的几何模型的四边形网格生成方法,它显著提高网格生成质量和效率,方便实用。包括以下步骤:(1.1)根据待分析实体,利用计算机建立实体几何模型;确定模型约束线和密度线形状与位置、约束点与密度点位置、每个区域范围与内外边界;(1.2)根据用户设定的网格尺寸信息,在模型内外边界、约束线及密度线上生成网格节点,对网格节点编号;视约束点和密度点为新生成的网格节点并对其编号;(1.3)将约束线、密度线、约束点和密度点视为面积为零的内部空洞,在每个区域内外边界上生成节点环,将带有内部特征约束的多连通区域转换成单连通区域;(1.4)对每个区域划分四边形网格;最后生成具有内部特征约束的四边形网格。
申请公布号 CN102129715B 申请公布日期 2015.05.20
申请号 CN201110071778.8 申请日期 2011.03.24
申请人 山东大学 发明人 赵国群;马新武
分类号 G06T17/20(2006.01)I 主分类号 G06T17/20(2006.01)I
代理机构 济南圣达知识产权代理有限公司 37221 代理人 张勇
主权项 一种具有任意内部特征约束的几何模型的四边形网格生成方法,其特征在于包括以下步骤:(1.1)首先利用计算机根据待分析实体,建立待分析实体对象的几何模型;根据模型的几何形状、约束线和密度线的形状和位置以及约束点和密度点的位置,确定模型每个区域的范围与内、外边界;(1.2)根据用户设定的网格单元尺寸信息,在模型的外边界、内部边界、约束线以及密度线上生成网格节点,并对网格节点编号;将约束点和密度点作为新生成的网格节点并对其编号;(1.3)将约束线和密度线、约束点和密度点视为面积为零的内部空洞,在模型每一个区域的外边界和内边界上生成节点环,计算内部边界和外部边界上节点距离最短的两个节点,通过连接着两个节点形成一条切割线,假想用这条切割线将区域切开一条宽度为零的缝隙,根据切割线两端点处的网格单元尺寸信息,在切割线生成过渡均匀的网格节点,将切割线上的节点和内部边界节点按一定的顺序插入到外部边界点环中,形成一个新的边界点环;并用该节点环表示该区域的内外边界形状,将每个区域内的所有内部边界转化并合并成外部边界,即将带有内部特征约束的多连通区域转换成单连通区域;(1.4)对每一个区域进行四边形网格划分;最后生成具有内部特征约束的四边形网格;所述步骤(1.4)中每一个区域的网格划分又包括以下步骤:(4.1)对于每一个内部边界,计算其上的每一个节点与每一个外部边界节点的距离,确定最短的距离及对应的内部边界节点和外边界节点;(4.2)在所有的内部边界中,确定与外边界节点之间距离最短的那个内部边界及对应的内部边界节点和外边界节点;(4.3)连接距离外边界最短的内部边界节点和对应的外边界节点,形成一条切割线,用这条切割线将区域切开一条宽度为零的缝隙,这样该内部边界就变成了外部边界;(4.4)根据切割线两端点处的网格单元尺寸信息,在切割线生成过渡均匀的网格节点,并对其进行编号;(4.5)重新计算外边界的节点环;若内部边界是约束点或密度点,则该节点在新的外边界中只出现一次,除此之外切割线上的所有节点在新的外边界中都将出现两次;当要划分的区域包含多个孔洞,即有多个内部边界时,内外边界合并的方法是:对每个内部边界选择与外部边界的切割线,在所有的内部边界中,选择切割线最短的内部边界与外部边界进行合并,形成新的外部边界,以此类推,对剩余的内部边界进行合并,直到所有的内部边界都与外部边界进行合并;在内外边界合并的过程中,需要在切割线上生成网格节点,其过程包括两个步骤:计算切割线上生成节点的数目以及计算生成的节点在切割线上的位置;设切割线两端节点i,j的网格密度值为μ<sub>i</sub>和μ<sub>j</sub>,其值分别为节点i,j处网格单元尺寸的倒数,切割线的长度为l<sub>ij</sub>,则在切割线上生成节点的数目为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>N</mi><mo>&cong;</mo><mn>0.5</mn><mo>&times;</mo><mrow><mo>(</mo><msub><mi>&mu;</mi><mi>i</mi></msub><mo>+</mo><msub><mi>&mu;</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>&times;</mo><msub><mi>l</mi><mi>ij</mi></msub><mo>-</mo><mn>1</mn><mrow><mo>(</mo><mi>N</mi><mo>&GreaterEqual;</mo><mn>0</mn><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000674414290000021.GIF" wi="1799" he="99" /></maths>计算出在切割线上生成的新节点数目后,下一步就是确定这些节点在切割线上的位置;在切割线生成N个新节点,即将切割线分割成N+1个线段;切割线上新节点的位置的确定遵循各线段重量相等的原则,线段重量等于各线段的平均密度值乘以该线段的长度;设与节点i相邻的第1个节点与节点i的距离为l<sub>i1</sub>,则第1个节点的密度值可通过两端节点i,j的网格密度值线性插值得到,即μ<sub>1</sub>=μ<sub>i</sub>+(μ<sub>j</sub>‑μ<sub>i</sub>)×l<sub>i1</sub>/l<sub>ij</sub>  (2)节点i与第1个节点之间的线段重量为0.5×(μ<sub>1</sub>+μ<sub>i</sub>)×l<sub>i1</sub>,等于切割线重量的1/(N+1),即0.5×(μ<sub>1</sub>+μ<sub>i</sub>)×l<sub>i1</sub>=0.5×(μ<sub>i</sub>+μ<sub>j</sub>)×l<sub>ij</sub>/(N+1)  (3)将(2)式带入(3)式,得到以l<sub>i1</sub>为未知数的一元二次方程,求解该方程,并将根带回(2)式得到第1个节点的网格密度值:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>&mu;</mi><mn>1</mn></msub><mo>=</mo><msqrt><msubsup><mi>&mu;</mi><mi>i</mi><mn>2</mn></msubsup><mo>+</mo><mrow><mo>(</mo><msubsup><mi>&mu;</mi><mi>j</mi><mn>2</mn></msubsup><mo>-</mo><msubsup><mi>&mu;</mi><mi>i</mi><mn>2</mn></msubsup><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><mi>N</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msqrt><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000674414290000031.GIF" wi="1852" he="100" /></maths>将(4)式带入(3)式整理后得到以下等式:R=l<sub>i1</sub>/l<sub>ij</sub>=(μ<sub>i</sub>+μ<sub>j</sub>)/(N+1)/(μ<sub>1</sub>+μ<sub>i</sub>)  (5)其中,R=l<sub>i1</sub>/l<sub>ij</sub>,R表示直线端点与第一个节点之间长度与整条直线长度的比值;设节点i,j的坐标分别为(x<sub>i</sub>,y<sub>i</sub>)和(x<sub>j</sub>,y<sub>j</sub>),则第1个节点的坐标为:x<sub>1</sub>=x<sub>i</sub>+(x<sub>j</sub>‑x<sub>i</sub>)×R,y<sub>1</sub>=y<sub>i</sub>+(y<sub>j</sub>‑y<sub>i</sub>)×R求出第1个节点的网格密度值和节点坐标之后,将第1个节点看作节点i,N值减1,采用上面的方法求出第2个节点的网格密度值和节点坐标,以此类推,求出切割线上所有节点的网格密度值和节点坐标;(4.6)若还有未处理的内部边界,重复步骤(4.1)~(4.5),将所有的内部边界转化并合并成外部边界,这样不管本区域内有多少内部边界,都可以将多连通区域转换成单连通区域;(4.7)采用区域分解法生成四边形网格;(4.8)对网格的内部节点、密度线和密度点上的节点进行光滑处理,区域外边界、内部孔洞、约束线和约束点上的节点不进行光滑处理。
地址 250061 山东省济南市历下区经十路17923号