一種有限元網(wǎng)格曲面剖分方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于數(shù)值計(jì)算的技術(shù)領(lǐng)域,具體地涉及一種有限元網(wǎng)格曲面剖分方法。
【背景技術(shù)】
[0002] 有限元法是20世界60年代出現(xiàn)的一種數(shù)值計(jì)算方法,最初用于固體力學(xué)的數(shù)值 計(jì)算,上世紀(jì)70年代英國(guó)科學(xué)家Zinenkiewicz 0. C等人的努力下,將它推廣到各類(lèi)場(chǎng)問(wèn)題 的數(shù)值求解,如溫度場(chǎng)、電磁場(chǎng)、應(yīng)力場(chǎng)等。有限元法的最初的思想是把一個(gè)大的結(jié)構(gòu)劃分 為有限個(gè)稱(chēng)為單元的小區(qū)域,在每一個(gè)小區(qū)域里,假定結(jié)構(gòu)的變形和應(yīng)力都是簡(jiǎn)單的,小區(qū) 域內(nèi)的變形和應(yīng)力都容易通過(guò)計(jì)算機(jī)求解出來(lái),進(jìn)而可以獲得整個(gè)結(jié)構(gòu)的變形和應(yīng)力。
[0003] 隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,有限元法無(wú)論在理論上還是應(yīng)用上都取得了巨大的 成功,已經(jīng)成為了工業(yè)設(shè)計(jì)、土木施工等領(lǐng)域的不可缺少的工具,越來(lái)越多大型且復(fù)雜的工 程設(shè)計(jì)都是由有限元法來(lái)模擬的。商業(yè)上也有許多有限元分析軟件,例如 :AbaqUs、ANSYS、 Hypermesh等。軟硬件上的突破,加上近些年來(lái)工業(yè)、土木、經(jīng)濟(jì)等發(fā)展迅速,都成就了有限 元法在設(shè)計(jì)和分析領(lǐng)域的不可或缺的地位。
[0004] 在有限元分析法中,一個(gè)重要的思想就是"分",也就是對(duì)模型進(jìn)行剖分。通過(guò)有限 元法進(jìn)行單元的剖分,進(jìn)而更深一步進(jìn)行單元分析,再將剖分后的單元合并成單元集合,繼 而可以對(duì)整體結(jié)構(gòu)進(jìn)行綜合分析。劉懷輝等人曾經(jīng)提出用AFT的改進(jìn)算法進(jìn)行平面區(qū)域的 有限元三角網(wǎng)格剖分;周勇等人則提出用BST樹(shù)來(lái)模擬剖分過(guò)程,以便實(shí)現(xiàn)任意有限元網(wǎng) 格的深度排序;Matsutomo等人利用粗網(wǎng)格計(jì)算磁通線,計(jì)算電磁場(chǎng)的不同密度來(lái)完成網(wǎng) 格剖分。
[0005] 然而,現(xiàn)有的有限元剖分方法通常存在一些問(wèn)題。例如,只能對(duì)平面有限元網(wǎng)格進(jìn) 行剖分;剖分之前需要指定切面方程來(lái)完成剖分;剖分算法效率較低;剖分之后合并成集 合單元真實(shí)感不強(qiáng)。針對(duì)這些問(wèn)題,我提出了一種新的有限元剖分方法,這個(gè)方法基于RBF 插值函數(shù),將用戶(hù)在屏幕上畫(huà)出的任意曲線進(jìn)行插值方程構(gòu)建,通過(guò)有限元網(wǎng)格模型與方 程的位置關(guān)系來(lái)完成有限元網(wǎng)格的曲面剖分。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的技術(shù)解決問(wèn)題是:克服現(xiàn)有技術(shù)的不足,提供一種有限元網(wǎng)格曲面剖分 方法,其使得剖分效率大幅提高,簡(jiǎn)化了交互過(guò)程,提升了視覺(jué)效果,同時(shí)這種新方法不但 可以完成曲面剖分,更可以輕松實(shí)現(xiàn)平面剖分。
[0007] 本發(fā)明的技術(shù)解決方案是:這種有限元網(wǎng)格曲面剖分方法,該方法包括以下步 驟:
[0008] (1)有限元數(shù)據(jù)的預(yù)處理,得到一個(gè)節(jié)點(diǎn)表和一個(gè)單元表,節(jié)點(diǎn)表是節(jié)點(diǎn)的所有信 息和所屬單元的索引列表,單元表是單元的所有信息和構(gòu)成該單元的索引;
[0009] (2)用鼠標(biāo)在屏幕上畫(huà)任意曲線,得到屏幕上二維坐標(biāo)點(diǎn)的集合,用RBF方法構(gòu) 建方程,這個(gè)方程代表了上一步畫(huà)的曲線,求三維有限元數(shù)據(jù)的所有點(diǎn)在該方程下的值,其 中值為正代表在曲線上方,值為負(fù)代表在曲線下方,值為零的點(diǎn)為切點(diǎn),遍歷有限元所有單 元,插值生成所有離散的切點(diǎn),把這些離散的切點(diǎn)進(jìn)行三角化,生成曲面剖面。
[0010] 利用任意曲線上的點(diǎn)構(gòu)建完成插值方程之后,發(fā)現(xiàn)對(duì)有限元單元進(jìn)行任意曲面剖 分只可能存在三種情況,曲線上方的點(diǎn)、曲線下方的點(diǎn)和位于曲線上的點(diǎn)。因此,本發(fā)明 將RBF插值函數(shù)應(yīng)用到了有限元剖分中,將用戶(hù)在屏幕上畫(huà)出的任意曲線進(jìn)行插值方程構(gòu) 建,通過(guò)有限元網(wǎng)絡(luò)模型與方程的位置關(guān)系來(lái)完成有限元網(wǎng)格的曲面剖分,從而使得剖 分效率大幅提高,簡(jiǎn)化了交互過(guò)程,提升了視覺(jué)效果,同時(shí)這種新方法不但可以完成曲面剖 分,更可以輕松實(shí)現(xiàn)平面剖分。
【附圖說(shuō)明】
[0011] 圖1是本方法的流程圖。
[0012] 圖2是六面體單元的編號(hào)示意圖。
【具體實(shí)施方式】
[0013] 這種有限元網(wǎng)格曲面剖分方法,該方法包括以下步驟:
[0014] (1)有限元數(shù)據(jù)的預(yù)處理,得到一個(gè)節(jié)點(diǎn)表和一個(gè)單元表,節(jié)點(diǎn)表是節(jié)點(diǎn)的所有信 息和所屬單元的索引列表,單元表是單元的所有信息和構(gòu)成該單元的索引;
[0015] (2)用鼠標(biāo)在屏幕上畫(huà)任意曲線,得到屏幕上二維坐標(biāo)點(diǎn)的集合,用RBF方法構(gòu) 建方程,這個(gè)方程代表了上一步畫(huà)的曲線,求三維有限元數(shù)據(jù)的所有點(diǎn)在該方程下的值,其 中值為正代表在曲線上方,值為負(fù)代表在曲線下方,值為零的點(diǎn)為切點(diǎn),遍歷有限元所有單 元,插值生成所有離散的切點(diǎn),把這些離散的切點(diǎn)進(jìn)行三角化,生成曲面剖面。
[0016] 利用任意曲線上的點(diǎn)構(gòu)建完成插值方程之后,發(fā)現(xiàn)對(duì)有限元單元進(jìn)行任意曲面剖 分只可能存在三種情況,曲線上方的點(diǎn)、曲線下方的點(diǎn)和位于曲線上的點(diǎn)。因此,本發(fā)明 將RBF插值函數(shù)應(yīng)用到了有限元剖分中,將用戶(hù)在屏幕上畫(huà)出的任意曲線進(jìn)行插值方程構(gòu) 建,通過(guò)有限元網(wǎng)絡(luò)模型與方程的位置關(guān)系來(lái)完成有限元網(wǎng)格的曲面剖分,從而使得剖 分效率大幅提高,簡(jiǎn)化了交互過(guò)程,提升了視覺(jué)效果,同時(shí)這種新方法不但可以完成曲面剖 分,更可以輕松實(shí)現(xiàn)平面剖分。
[0017] 優(yōu)選地,如圖2所示,所述步驟(1)中有限元的單元是六面體單元,該單元具有8 個(gè)點(diǎn)。
[0018] 優(yōu)選地,在所述步驟(2)包括以下分步驟:
[0019] (2· 1)根據(jù)公式(2)-⑷構(gòu)建RBF插值函數(shù)
[0023] 其中C1表示了約束集合中的編號(hào)為i的點(diǎn)的坐標(biāo),1彡i彡k代表了 1~K范圍 下的點(diǎn)的編號(hào),4,4,技分別代表了約束集合中編號(hào)為K的點(diǎn)的x,y,z分量坐標(biāo),Φ(χ) =I X 12Iog (I X I)代表了徑向基函數(shù),其中X = Cl-C]代表了 c P (^兩點(diǎn)之間的距離,那么Φ lk 也就代表了編號(hào)為i的點(diǎn)與編號(hào)為k的點(diǎn)之間的歐氏距離,h1= f(c J代表了編號(hào)為i的 坐標(biāo)點(diǎn)的函數(shù)值,d,表示權(quán)重,P(X)是關(guān)于線性常量f的一次多項(xiàng)式。構(gòu)建插值方程的過(guò) 程可以理解為,已知約束集合所有點(diǎn)的坐標(biāo)C 1、每?jī)蓚€(gè)點(diǎn)的徑向基函數(shù)Olk和函數(shù)值h i,來(lái) 求未知變量即權(quán)重Clj和一次多項(xiàng)式P(X)的過(guò)程;
[0024] (2. 2)對(duì)三維模型做坐標(biāo)變換,把模型坐標(biāo)系變換到屏幕坐標(biāo)系下,然后將變換后 的屏幕坐標(biāo)系下的值帶入插值函數(shù)求解;
[0025] (2. 3)對(duì)于每一個(gè)六面體單元,遍歷12條邊,如果一條邊上的兩端點(diǎn)的函數(shù)值的 乘積是小于0的,那么這條邊上的兩個(gè)點(diǎn),一個(gè)位于曲線的上方,一個(gè)位于曲線的下方,該 條邊上有切點(diǎn),且切點(diǎn)對(duì)于插值函數(shù)的函數(shù)值為0 ;得到這條邊上兩個(gè)端點(diǎn)的坐標(biāo)pos。、 POS。,函數(shù)值v。、V1,得到切點(diǎn)位置與這條邊的比例系數(shù)u
[0027] 之后插值生成切點(diǎn)的坐標(biāo)POS
[0028] pos = POS0^(I-U)=IiPOS1-U (6);
[0029] (2. 4)對(duì)切點(diǎn)進(jìn)行三角網(wǎng)格化;
[0030] (2. 5)將所有三角化的圖元連接在一起,將圖元數(shù)據(jù)、切點(diǎn)連接關(guān)系的信息從CPU 傳輸?shù)紾PU端,繼而生成剖面。
[0031] 優(yōu)選地,在所述步驟(2. 4)中,對(duì)于切割后得到五邊形的條件是切點(diǎn)滿(mǎn)足:①一條 棱上的點(diǎn);②與該棱平行的兩條棱上的點(diǎn);③與該棱垂直面上的與之不相交的棱的兩條棱 的中點(diǎn)。
[0032] 優(yōu)選地,在所述步驟(2. 4)中,對(duì)于切割后得到六邊形的條件是切點(diǎn)滿(mǎn)足:①先取 一個(gè)頂點(diǎn)引出的三條棱除了豎棱外的另外兩條棱的中點(diǎn);②與①中兩條棱其分別相交的兩 條棱的中點(diǎn);③與①中兩條棱的平行面上的平行棱且任意兩條棱不通過(guò)另一條棱相連接的 兩條棱的中點(diǎn)。
[0033] 優(yōu)選地,在所述步驟(2.4)中采用了哈希圖的方法來(lái)確定棱上的切點(diǎn)三角化后下 一個(gè)切點(diǎn)是位于哪條棱上。
[0034] 如圖1所示,現(xiàn)在給出一個(gè)本發(fā)明的詳細(xì)實(shí)施例。
[0035] 1.有限元數(shù)據(jù)的預(yù)處理
[0036] -般來(lái)講,有限元數(shù)據(jù)可以理解成采樣點(diǎn)數(shù)據(jù)的空間網(wǎng)格,這些數(shù)據(jù)包括了屬性 數(shù)據(jù)和網(wǎng)格的拓?fù)浣Y(jié)構(gòu)(有限元單元),比較常用的有限元單元就是六面體單元。
[0037] 數(shù)據(jù)讀入過(guò)程是建立節(jié)點(diǎn)與單元關(guān)系的過(guò)程,每個(gè)節(jié)點(diǎn)都有自己的編號(hào)ID,X,Y,Z 坐標(biāo),屬于哪些單元(拓?fù)浣Y(jié)構(gòu))。此外,每個(gè)單元也會(huì)記錄下自己的編號(hào)ID,組成該單元 的8個(gè)點(diǎn)的編號(hào),單元材質(zhì),單元類(lèi)型等信息。這個(gè)過(guò)程建立完成后,就可以得到一個(gè)節(jié)點(diǎn) 表,可一個(gè)單元表。節(jié)點(diǎn)表中有節(jié)點(diǎn)的所有信息和所屬單元的索引列表,而單元表中有單元 的所有信息和8個(gè)構(gòu)成該單元的索引。
[0038] 2.基于RBF插值函數(shù)網(wǎng)格剖分優(yōu)化算法
[0039] 該算法的主要流程如圖1所示。在對(duì)有限元數(shù)據(jù)預(yù)處理之后,我們采用了一種簡(jiǎn) 便快捷的交互方式。通過(guò)這個(gè)過(guò)程,可以得到屏幕上二維坐標(biāo)點(diǎn)的集合,該集合為下文即將 要提到的平滑函數(shù)提供必要的輸入。之后,用RBF方法構(gòu)建方程,這個(gè)方程代表了上一步畫(huà) 的曲線。接著,求三維有限元數(shù)據(jù)的所有點(diǎn)在該方程下的值,其中值為正代表在曲線上方, 值為負(fù)代表在曲線下方,值為零的點(diǎn)恰好為切點(diǎn)。然后,遍歷有限元所有單元,插值生成所 有離散的切點(diǎn)。繼而,把這些離散的切點(diǎn)進(jìn)行三角化。最終生成曲面剖面。
[0040] 2. 1構(gòu)建RBF插值函數(shù)
[0041] 該算法中的核心就是求得平滑函數(shù),對(duì)于二維離散點(diǎn)的情況,把這個(gè)插值過(guò)程描 述為,給定包含K個(gè)不同點(diǎn)的集合{ Cl,C2,…ck}和對(duì)應(yīng)的K個(gè)實(shí)數(shù)集合O^h2,…h(huán) k},找到 一個(gè)平滑的函數(shù)f (X),這個(gè)函數(shù)滿(mǎn)足f (Ci) = hi, 1彡i彡k。
[0042] 為了要解決這個(gè)問(wèn)題,首先定義一個(gè)可以匹配所有給定數(shù)據(jù)點(diǎn)的單一函數(shù),然后 定義一個(gè)可以限制插值函數(shù)的能量方程E,其中能量方程E可以寫(xiě)成:
[0044] 最小化方程(1)。其中符號(hào)浩⑷表示在X方向上的二次偏導(dǎo)數(shù),符號(hào)后辦)表示在 X方向和y方向的混合二次偏導(dǎo)數(shù),符號(hào)/Λ(χ)表示在y方向上的二次偏導(dǎo)數(shù)。其中的能量 方程可以理解成為區(qū)域Ω上的f( x)的平方曲率和函數(shù)。那么該問(wèn)題的目標(biāo)就是,找到一 個(gè)f(x)既可