4. 理論方法程式化
4.3 縮減 Mesh & Smoothing
本研究中簡化 Mesh 的方法是以一個內部節點為基礎,藉由互換四邊形對角 線的方式來消去此節點,具體做法由連接三點所形成的三角區域開始處理,然後 是連接四點的四邊形區域,再來是五邊形依此類推至 N 邊形。
1. 內部節點只有連接 3 點(三角形),直接縮成三角形,不論外邊點是否為邊界
2. 內部節點連接 4 點(4 邊形)
a. 凸 4 邊形,任意兩對頂點相連
b. 凹 4 邊形,只能類似下圖連接法:
3.內部節點為 5(以上)邊形,置換一邊(N 邊)後為四邊形,然後以四邊形處理,方 式依據置換邊的原則
4.3-1 四邊形對角線置換原則
4.3-2 判斷凹或凸四邊形法
對於置換四邊形對角線上存在一個問題,只有凸四邊形才適合置換,凹的四 邊形置換後會破壞三角網格結構,如下圖 8.所示:
凸四邊形則沒有這種問題,如下圖 9.所示:
圖 8.
圖 9.
如何判斷是否為凸四邊形則可以用平面直角坐標系上直線方程式,以下圖
4.3-3 Smooth
經過縮減後的 MESH 在結構上會有些微變化,些許變化在整體結構上雖然影 響不大,不過多次的縮減後則可能出現過於尖銳的三角網格如下圖 12.,過於尖 銳的三角網格不僅不利於計算在網格縮減過程也會造成阻礙,因此有必要藉由平 滑的技術來處理種問題。另外初始網格結構平滑程度也許不足,因此獲得初始網 格時也可先 smooth 後再做接下來的處理。
本文採用的平滑技術為質心位移法,藉由每次將中心點向質心逐漸移動後達 成平滑目的圖 13.。在此對於邊界點以及某些固定點則不做此動作,以避免整體 網格結構破壞。
圖 12.
圖 13.
4.3-4 對角線置換法
除了使用 smooth 處理過於尖銳的網格外,對角線置換也可適用於這部分,
如下圖 14.,左圖兩紅色圈部分為尖銳網格,將其最長邊做置換後得到右圖,在 此是否可置換皆依據之前提過之判斷法,兩圖比較下明顯右圖較符合所需,經過 置換後之網格仍配合 smooth 一並處理,以便得到較平滑網格。
需要轉置的邊長條件設定為三角網格中,最大邊長大於三邊平均長度 1.5 倍 或最大邊長為最小邊長 2 倍以上,符合此條件即進行處理,所有面都檢查過後再 進行 smooth,以效率來看此方法比直接 smooth 造成的效果還要顯著。
圖 14.
4.4 邊界點的縮減
在整體縮減過程中並沒有刪除或更改邊界點,經過縮減後的網格某些邊界點 則變得不重要可以進行縮減,在此提出可縮減的邊界點判斷法,如下圖 15.只有 邊界點的連接數為 3 時才適合刪除,a、b、c 皆為邊界上的節點,其中 a 為主要 目標點,與其相連的點有(b,c,d)三點,因此刪除 a 點(刪去 ad 邊)後整體來看仍為 三角形不會破壞網格結構。
如果 a 點連接數超過 3 點如下圖 16.,則不處理。
a
b c
d
b c
d
圖 15.
b a c
d
e
圖 16.
4.4-1 判斷基準點
邊界點中只有當(b,a,c)3 點為同一直線時才適合刪減,當 3 點不共線時 a 點 則視為基準點(此以圖 17.為例),而基準點不論何時我們都不動它。如下圖 17.,
(a,b,c,d,e)為邊界上之 5 點,其中(b,d,c)、(c,a,e)分別共線,而 c 點即為基準點。在 此我們可將有轉折的點(不共線)視為基準點。
如何判斷基準點除了一開始給定之外可利用向量外積(corss product)的方式 來判斷,若兩向量平行則外積值為 0,即為 3 點共線圖 18.,當外積值不為 0 時 則有基準點圖 19.。
a b
c d
e 圖 17.
V1 V2
V1 V2
(V1 X V2)=(0,0,0)
(V1 X V2)=(0,0,k) ,k≠0 圖 18.
圖 19.
4.5 重組 Mesh
完成上述動作後,即可建立新面矩陣。作法與重牌節點相同,在此取 neib
5. 實際結果
最後我們對研究方法做測試,第一部分先對縮減後的結果做檢視,查看是否 仍為正常的 Mesh 結構,整體上 smoothing 結果是否理想。第二部分將未縮減前 原始 Mesh 與縮減之後的新 Mesh 在數值計算上做比較。
以下圖 20.為原始 Mesh 開始測試,此圖有 1101 個節點和 2072 個面,且所 有面皆為三角形組成,整體看來為正規的三角網格。
圖 20.
(1101,2072)
對於上圖 20.縮減的方式,因為可以針對需要縮減的地區進行縮減,所以在 此先對中心點(5,5)周圍區域進行縮減,範圍暫定為 2,也就是(5,5,2)這個圓的部 分進行測試。下圖 21.為縮減後結果,總體上並無錯誤,平滑程度也可以接受,
此結果節點數為 900 而面個數為 1694。
(5,5,2)=(x 座標 ,y 座標 ,圓半徑)
(900,1694) 圖 21.
下圖 22.將原始網格和縮減後網格重疊做比較,紅色線為原始網格藍色線為 縮減後網格。大致上可以看出已(5,5)為中心周圍少了很多節點
圖 22.
Red(1101,2072) & Blue(900,1694)
接下來對整個區域做縮減,預設剩餘節點數約 10%。下圖 23.為處理後結果,
此網格結構僅由 44 節點以及 61 個面組成,對於邊界點的處理上除了可拿掉的節 點之外皆不改變其位置,因此會有部分邊界點很靠近的情況,基於邊界點不動的 原則上對此不另作處理。
圖 23.
(44,61)
下圖 24.多增加幾個縮減區域測試,縮減區設定為三,分別為(1,2,2)、(3,7,3)、
(9,4,1),縮減範圍以黑圈標示,節點數 609 面個數 1137。就結果來說沒有網格結 構上的錯誤,整體平滑程度也可以接受。
(609,1137) 圖 24.
下圖 25.為原始網格圖 20.和圖 24.重疊圖做比較,紅色線仍為原始網格藍色 線則是縮減後網格。
圖 25.
Red(1101,2072) & Blue(609,1137)
接下來我們對不規則的網格結構做測試,下圖 26.類似手掌的網格
我們對其進行全域縮減得到以下的結果(圖 27.):
(1663,3046)
(113,135)
圖 26.
圖 27.
將上頁兩圖重疊做比較(圖 28.):
基於科學計算上的觀點來說,我們並不希望在邊界也進行消去,因此下圖 29.將保留所有的邊界點,在五根手指的部分因為過於細長則不處理僅對掌心部 分進行縮減:
red(1663,3046), blue(113,135) 圖 28.
最後我們適當的取範圍得到下面的結果(圖 30. & 圖 31.):
(1130,1980)
red(1663,3046),blue(1130,1980)
圖 30.
圖 31.
對第一部分測試的結果來看,並無破壞網格結構,對縮減區域也有不錯的結 果。因此接下來我們將在數值計算上以及處理速度上做一些討論。
網格在數值計算上的應用常見的方式為有限元素法,方法上將每個面當成一 個元素來處理,經過計算後形成的矩陣求得數值解。第二部分中我們將用有限元 素法解一般常見的偏微分方程例子,針對解的誤差值以及處理時間上做討論。
例子一:
Laplace's equation
PDE : ∇
2u = 0 ⇔
∂∂x2u2+
∂∂y2u2= 0
實際解設 u = xy,邊界條件預設為實際解 u = xy
以有限元素法求數值解可知精準度與元素大小有關,當分割的越細計算出的 精準度就會越高,而誤差估計則與元素劃分時最大三角形邊長 h 有關,一般來說 如果實際解為二階導數則函數誤差與h2等價,一階導數誤差與 h 等價,因此可以 預測 Laplace's equation 數值解誤差在h2
。
在此將以下列網格(圖 32.)做計算求數值解並比較:
此網格有 1101 節點 2072 三角元素(面),最大邊長 h=0.0482,X、Y 介於[0,1]。
實際最大誤差為 8.5941x10−5,h2=0.04822=0.00232324=2.32324x10−3,誤差值在 (1101,2072) , [0,1]X[0,1]
圖 32.
以元素較大的網格(圖 33.)測試,此網格中最大邊長 h=0.8046,X、Y 介於 [0,10]。
實際最大誤差為 1.83x10−2,h2=6.4738116x10−1,誤差值仍在預估之內。因此我 們以有限元素法來計算此問題是可行的。
接下來以局部縮減之網格(圖 34.)做測試:
在此網格(圖 34.)中,經由誤差估計可以知道最大誤差會與縮減後的區域內 最大元素邊長 h 有關,因此可以預想縮減區域的誤差會最大,而未縮減的區域與 原網格之誤差相差不大。此網格最大邊長 h=1.956,實際最大誤差為 1.336 x10−1, h2=3.8259 仍在誤差之內。
本研究的目的在於針對選定區域縮減網格,縮減比例依需求設定,在此預設 皆為 10%,也就是將區域內 90%左右之節點消除,在此之下誤差因部分元素變大 而增加但是以誤差估計來看仍然在範圍之內,也就是說在數值處理過程中這區域 因為少了 90%個節點而省去 90%的時間,代價就是數值的精準度下降,不過這區 域的誤差仍在預計的範圍。
(432,798) , [0,10]X[0,10]
(758,1411) ,
縮減區域為 (4,3.5,3) [0,10]X[0,10]
圖 33.
圖 34.
在數值計算上除了有限元素法之外也有其他的方法,在此僅以常見的解法來 比較,對於其他精準度較高的算法則不在本研究的討論之內。根據上面的例子結 果可知在誤差估計上除了縮減區域精準度下降,未縮減之部份可說沒有影響。因 此接下來針對處理時間上做討論。
因為研究上的方便性,本研究使用 matlab6.5 編寫程式並執行所有結果,基 於軟體本身的限制,節點、網格數目有上限,所以無法對 2 萬節點以上的網格做 測試,因此僅對 1 萬以下節點做一些比較分析。
首先紀錄將原網格縮減所需時間,針對須處理節點數的多少所花的時間上也 會因此增加或減少。因為科學計算上的問題以下網格我們將保留所有邊界點。
因為程式內如何選擇刪除節點為亂數決定,
因此即使是同一區域進行縮減後的結果也略有 不同。右圖 35.為原網格圖,使用有限元素法所 花時間平均 0.7 秒。
將原圖取中心範圍縮減後得到(638,1146)右 下圖 36.,所花時間 6.2 秒。
(1101,2072)
(638,1146)
圖 35.
圖 36.
此問題最後以(4233,8208)圖 37.所構成的網格做測試,以有限元素法處 理此網格所花平均時間為 36 秒。將此網格進行中心區域縮減所花時間為 80 秒 (1729,3200)圖 38.。
圖 38.
圖 37..
(4233,8208)
(1729,3200)
根據上述結果可見縮減所花時間比直接計算還要多,對此進行程式內部分別
對此問題同樣以有限元素法處哩,首先測試誤差是否與例一相同,也就是當 最大邊長 h 時誤差在h2。測試網格如右圖 39.:
此網格有 1101 節點 2072 三角元素(面),最大邊 長 h=0.0482,X、Y 介於[0,1]。實際最大誤差為
5.3407x10−5,h2=0.04822=0.00232324=2.32324x10−3, 誤差值在預估之內。下圖 40.為數值解之流速圖。花 費平均時間 0.94 秒。
(1101,2072) ,
[0,1]X[0,1] 圖 39.
圖 40.
下圖 41.為流速圖和網格重疊圖:
圖 41.
對此例題我們分別以更密之網格(圖 42.)進行全域縮減以 及部分區域縮減進行測試。使用有限元素法所花平均時間 30.6 秒。將此網格進行縮減已於例一測試過,因此只將縮減後網格 進行測試。
進行全域縮減後之網格為(427,740)(圖 43.),使用有限元 素法所花平均時間 0.147 秒。數值解形成流速圖 44.如下:
(4233,8208)
(427,740)
圖 42.
圖 43.
圖 44.
6 結論
對於本文所提出之方法確實可以在指定區域進行平面網格縮減,實驗結果顯 示雖然縮減結果符合預期,但是程式執行時間上也不少,這方面可以在建立資料 時只對縮減區域建立所需資料而不對整體建構,藉此可以省去建立不需處理的網 格時間。從實驗結果來看建立資料與縮減過程花費時間大約各占一半,因此可預
對於本文所提出之方法確實可以在指定區域進行平面網格縮減,實驗結果顯 示雖然縮減結果符合預期,但是程式執行時間上也不少,這方面可以在建立資料 時只對縮減區域建立所需資料而不對整體建構,藉此可以省去建立不需處理的網 格時間。從實驗結果來看建立資料與縮減過程花費時間大約各占一半,因此可預