不知道是最近是有人蕃薯粉吃多了?還是我已經跟不上時代潮流?曾幾何時,『到時候再說』也可以用在設計的風險評估?
2019年10月18日 星期五
2019年10月15日 星期二
演算法(Algorithm)與猜數字遊戲
相信大家在小時候都玩過猜數字遊戲吧?就是幾A幾B的遊戲,誰先猜出對方的數字,誰就贏得勝利。但要如何藉由幾A幾B,得到對方正確的數字,相信每個人都有自己的方法,差異只在有效沒效,速度快慢而已。
CFD 軟體也是一樣,在離散後產生數十萬,數百萬,甚至數千萬的網格後,如何獲得每個網格的值,也是必須告訴電腦,如何用已知的值去得到正確的值,這一個流程就稱之為演算法(Algorithm)。以 FloTHERM 而言,說明文件中好像沒有提到是採用何種驗算法,但看起來有點像是 SIMPLE 系列的演算法,但我也不是很確定。但有了演算法,告訴電腦怎麼去猜每個網格的數字,也得先告訴電腦第一組亂猜的數字吧?所以,第一組數字可以隨便亂給一個數字,當然,不能是一組非常離譜的數字。而演算法就可以依據第一組數字,去猜第二組數字,藉由第二組數字去猜第三組數字,而這過程就稱為疊代,直到猜出符合收斂條件的一組數字,或是達到所設定猜測的次數。
至於第一組數字給多少,要看軟體有沒有提供這個功能,如果第一組數字給的好,有助於以較短的時間得到答案,就像是好的開始是成功的一半。就如同猜數字遊戲,第一次猜就得到4B一樣。一組方程式,配合適當的邊界條件,可以獲得唯一解,所以,理論上只要演算法正確,求解器夠強健,對穩態問題而言,任何的流場初始值,都可以獲得正確的結果。但對暫態流場而言,流場的初始值是有特別意義的。兩者不可給搞混了。
CFD 軟體也是一樣,在離散後產生數十萬,數百萬,甚至數千萬的網格後,如何獲得每個網格的值,也是必須告訴電腦,如何用已知的值去得到正確的值,這一個流程就稱之為演算法(Algorithm)。以 FloTHERM 而言,說明文件中好像沒有提到是採用何種驗算法,但看起來有點像是 SIMPLE 系列的演算法,但我也不是很確定。但有了演算法,告訴電腦怎麼去猜每個網格的數字,也得先告訴電腦第一組亂猜的數字吧?所以,第一組數字可以隨便亂給一個數字,當然,不能是一組非常離譜的數字。而演算法就可以依據第一組數字,去猜第二組數字,藉由第二組數字去猜第三組數字,而這過程就稱為疊代,直到猜出符合收斂條件的一組數字,或是達到所設定猜測的次數。
至於第一組數字給多少,要看軟體有沒有提供這個功能,如果第一組數字給的好,有助於以較短的時間得到答案,就像是好的開始是成功的一半。就如同猜數字遊戲,第一次猜就得到4B一樣。一組方程式,配合適當的邊界條件,可以獲得唯一解,所以,理論上只要演算法正確,求解器夠強健,對穩態問題而言,任何的流場初始值,都可以獲得正確的結果。但對暫態流場而言,流場的初始值是有特別意義的。兩者不可給搞混了。
2019年10月12日 星期六
殘餘值的意義
FloTHERM 計算結果的正確性有多少?相信很多人都有疑惑,當然,也有很多人對於自己的模擬能力也充滿信心。FloTHERM 採用的有限體積法,所以殘餘值是判別計算結果的最基本指標。
有限體積講的是守恆,所以殘餘值最簡單的說法就是『殘餘值代表不守恆程度』。相信這一部分大家都可以理解,比較大的問題是殘餘值要低到多少,才可以視為守恆或是收斂?我想這問題見仁見智,一般最好詢問原廠,畢竟殘餘值的計算方式,每個軟體的定義都不一樣,不一樣的情況下,就無法將某一個值,套用在不同軟體。例如,以 FloTHERM 為例,殘餘值(取對數)小餘 1 是為收斂。而殘餘值有自己的定義方式。但 Icepak 的殘餘值並不採用這種定義,所以收斂標準,在 Icepak 中是另外的值。所以,不同的軟體,殘餘值既計算使用不同的定義,自然收斂標準的值,也會不一樣。
但重點是,殘餘值多少可以視為收斂?上面說過,這問題最好問原廠。以 FloTHERM 的說法,殘餘值取對數小餘 1 視為收斂(後面省略取對數,直接稱殘餘值),小於 10 是可以接受。那為什麼 10 是可接受?100 可不可以接受?1000 就不能了嗎?我在其他論壇舉過一個例子:圓周率 Pi 是多少?正六邊形夠不夠圓?如果正128邊形,夠不夠圓?如果說圓周率 Pi 是 3,是否可以接受?Pi 是 3.14,是否足夠精確?我想這一部分含有人為的成份在裡面。所以,殘餘值多少可以視為收斂,最好還是參考原廠的說法吧。
有限體積講的是守恆,所以殘餘值最簡單的說法就是『殘餘值代表不守恆程度』。相信這一部分大家都可以理解,比較大的問題是殘餘值要低到多少,才可以視為守恆或是收斂?我想這問題見仁見智,一般最好詢問原廠,畢竟殘餘值的計算方式,每個軟體的定義都不一樣,不一樣的情況下,就無法將某一個值,套用在不同軟體。例如,以 FloTHERM 為例,殘餘值(取對數)小餘 1 是為收斂。而殘餘值有自己的定義方式。但 Icepak 的殘餘值並不採用這種定義,所以收斂標準,在 Icepak 中是另外的值。所以,不同的軟體,殘餘值既計算使用不同的定義,自然收斂標準的值,也會不一樣。
但重點是,殘餘值多少可以視為收斂?上面說過,這問題最好問原廠。以 FloTHERM 的說法,殘餘值取對數小餘 1 視為收斂(後面省略取對數,直接稱殘餘值),小於 10 是可以接受。那為什麼 10 是可接受?100 可不可以接受?1000 就不能了嗎?我在其他論壇舉過一個例子:圓周率 Pi 是多少?正六邊形夠不夠圓?如果正128邊形,夠不夠圓?如果說圓周率 Pi 是 3,是否可以接受?Pi 是 3.14,是否足夠精確?我想這一部分含有人為的成份在裡面。所以,殘餘值多少可以視為收斂,最好還是參考原廠的說法吧。
訂閱:
文章 (Atom)
