求解發散偶爾也是會出現一些不完全是網格造成的問題
如果我們按照建模流程來分析,第一個可能會發散的關卡是列式,在模擬中稱作建模(modeling)。
這在意義上相當於你如果提給他一組無解的方程式他怎樣都是解不出來的。
這種我比較覺得是bug,而不是技術問題,但的確會發生,可以透過一些工具來避免掉。
第二種就是方程式離散化,在模擬中就是網格了(mesh),網格除了對於求解收斂有直接影響外,還有一個是影響到答案的解析度,有點像是480p對上1080p的感覺。雖然你可以用平滑化去繪製你的圖,但是概念相當於你相機畫素差用修圖補償的意思。
第三種是迭代步長,不管是暫態的time step或是穩態中的網格大小其實概念都是類似,就是你一次迭代打算跑多遠。
想像你現在在打高爾夫,你要把球打進去,首先我們實際點,一桿進洞是不能指望的。當我們終於上到果嶺了,離洞口只有一兩公分的距離,你不換桿,一敲,阿過頭,再敲,再過頭,這就是低位震盪。
如果你一開始就在果嶺呢?

這次的問題是一個,如何讓客廳的冷氣成功吹進房間。
本來以為應該秒殺,但沒想到遇上了這個有趣的狀況。
在切網格時候其實一點問題都沒有,甚至連Non-conformal mesh都沒用上。
但是迭代卻是…..

花惹發,這什麼鬼東西
莫不會是我網格切太粗? 密一點看看

如果我們仔細觀察一下會發現,發散的原因看起來是出在 y-velocity分量上
而我們從下一張圖可以發現,整體流場在出了冷氣口之後很快就降到很靠近0了

這個狀況其實有一點類似自然對流求解,就是整個流場的解不管哪個分量都很靠近0,因此你隨便走一步都會太大步。在自然對流下,我們可以給一個初猜值,反重力方向0.1m/s加快他找到迭代方向。但是這次沒辦法。你看第一章照片就知道整個房子的流場沒什麼規律性。
這時候回到本次主角 Under-relaxation上場了,如果按照剛剛的概念就是,果嶺上面換桿。
所謂換桿,實際上是對於每一步都加上一個damping係數,這個值Momentum預設是0.7, Pressure是0.3
如果我們把0.7->0.5

比起一開始,每次都暴走,調整後變成一段時間跳針一次,但是依舊說不上理想
如果從0.5->0.4

這下看起來有明顯的改善了,雖然 y-velocity依舊震盪,但是好多了,更重要的是,當他找到了求解方向之後就不再震盪了(700步後)
如果以後有遇到這種流場解本身就很小的狀況,或是溫差很小,加上劇烈震盪,也許調整方程式的under-relaxation能夠有所幫助,至於調整的對象,可以透過殘值來去判斷,像是如果我還想得到更漂亮的解,也許下一個調整對象就是temperature。