最後我們對研究方法做測試,第一部分先對縮減後的結果做檢視,查看是否 仍為正常的 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 結論
對於本文所提出之方法確實可以在指定區域進行平面網格縮減,實驗結果顯 示雖然縮減結果符合預期,但是程式執行時間上也不少,這方面可以在建立資料 時只對縮減區域建立所需資料而不對整體建構,藉此可以省去建立不需處理的網 格時間。從實驗結果來看建立資料與縮減過程花費時間大約各占一半,因此可預 期只在縮減區域進行處理花費時間會大幅減少,這是一個改進的方向。
由於本文只在 1 萬點以下做測試並不能真正反映出此方法的速度,我們從程 式處理上做分析,我們以每填入一格資料算一次處理動作,建構全部節點與網格 (即輔助矩陣)所花的成本若節點數為 N 網格數為 M 則最多需花 15M+20N,而在 處理網格縮減上每個節點最多進行 10 次的置換邊,因此若想縮減至 10%以下的 節點數,最多花費時間為 0.9 X 10 X N = 9N。也就是總共最多花費 15M+29N 的計 算量可以獲得 0.1*N 的縮減網格,以這種理論上來看在節點數很大時因該可以看 出其速度,如果不建構輔助矩陣而以其他方法代替,可以預見縮減至 10%的網格 所需計算量最多僅需 9N。
對於未來除了程式寫法有待改進外仍然有很多發展的空間,例如將此方法與 數值計算直接結合計算、推廣至三維空間進行處理,在不同的數值方法下做時間 及誤差的分析討論仍不失為很不錯的研究方向。