有限體積方法處理非結構網格-方法框架
我們經常能夠看到一些講解通過有限體積進行數值計算的文章,有的還給出了詳細的代碼,只要一跑就能得到結果,但是美中不足的是這些文章大多數都是基于等距的結構網格而且還是一維的,學習一下基礎的原理是可以的,但是要在現實中用起來難免存在諸多限制。同時,我們也可以看到很多的商業軟件,比如Fluent很容易可以將一個和真實場景的幾何離散成網格然后求解,結果還可以花花綠綠的展示出來,看起來就非常高端。
這期文章主要講講如何采用有限體積方法計算非結構網格上的偏微分方程,與其他文章不同的是這里網格和方程是獨立開的,而且處理3維的方程,代碼主要基于python的numpy。
要說3維和一維的方法差距確實有,而且很大,而且要說清楚非常難,這里先從簡答的說起。簡單就從數學物理方程講吧,大多數方程可以寫成如下的形式。
鑒于每一項都有不同的數值特性,將這四項進行離散,每一項都可以得到如下的離散格式,離散過程采用的就是有限體積法,這里先不去講。
有了上面的公式之后是不是就可以給出迭代更新的公式了呢,只需要在全部計算域上對每個網格計算一下這個值,然后重復個幾十或者一百步就可以得到穩定的值,這個過程就叫收斂。
但是,一般來說為了使得迭代過程更加平滑,不會因為更新產生過大的動蕩我們一般把上一步的值和更新的值做一個權重來更新網格的值,比如這里都是0.5,當然你也可以選擇0到1之間的其他值,并不影響,只要給出兩者之間的權重就可以了,如果后面部分權重太小的話迭代步數會需要很多,可能不劃算。
知道了怎么去更新之后,就來說說具體的計算過程。
公式2中C表示網格的中心,可以發現我們這里把各項都分解成為了三個部分,其中第一部分只需要用到當前網格中心的值,第二部分需要用到各個面上的值,第三部分需要用到梯度,這些東西就構成了一個網格體中的代數方程了,那么他們的系數怎么回去呢,這就需要結合具體是哪一項來進行解決了。
鑒于完整處理這四項工作量較大,我們以擴散項為例,因為這一項容易理解,要處理的也比較少。首先擴散項我們依舊可以采用上面的公式,并結合如下的方程
我們采用公式3,幾何公式5把它的系數項給弄出來,具體的方法這里就不寫了。
我們這里源項時等于0的,所以bc里面的Q處理的時候直接等于0就可以了,也就是說第三個式子就是
通過上面的演算,我們已經知道了對于求解工程其實就是需要得到三個系數項就可以了,這里為了避免看到一大堆得數學符號犯困,這里把各個物理量的意義給出,Г符號就是熱導率可以看做常數 ,是不是只需要知道gDiff和Tf還有▽?三個就可以了,這三個都要結合網格來處理,大致的方法如下,具體的后面細講,這里先了解整個流程就可以了,具體的名詞下期會再解釋。
喜歡的朋友可以給個關注或者聯系我。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















