簡單說來。一個好的CFD軟件,或者說一個能往外推的CFD軟件,應(yīng)該經(jīng)過千錘百煉!
這種千錘百煉,對軟件的編寫、算法的植入的要求,是非常高的。
給你們舉個例子,看看OpenFOAM這面怎么搞的。
最近在看化學(xué)反應(yīng)。因為化學(xué)反應(yīng)里面的雅克比矩陣一般是密集矩陣。因此求解一般都是直接算。就涉及到了LU分解啥的東西。
然后就看到一個有意思的東西。OpenFOAM-4.0曾經(jīng)對LU直接求解做了代碼上的改動。改動很少。帶來了15%的性能提升。
**對于服務(wù)器來說,這15%的提成,可能是一代CPU的差異。**比如老的CPU可能是100秒。新的CPU跑85秒。
OpenFOAM-4之前的代碼中的矩陣是定義了一個指向指針的指針。在4.0版本之后,只定義了一層指針。出發(fā)點是:
The row-start pointer array provided performance benefits on old computers but now that computation is often cache-miss limited the benefit of avoiding a integer multiply is more than offset by the addition memory access into a separately allocated array. With the new addressing scheme LUsolve is 15% faster.
在老版本的代碼中,矩陣元素的訪問不需要計算。OpenFOAM認為這對于比較老的計算機是有效的。
但是都2023年了,現(xiàn)在的服務(wù)器cache miss的現(xiàn)象很常見。之前在定義比較復(fù)雜的指針的時候,可以避免計算來尋址,但是這種避免計算尋址帶來的好處,被內(nèi)存訪問抵消掉了。
因此OpenFOAM-4之后,把這種指向指針的指針給取消了。不這么搞了。要尋址,就相乘。
簡直是人才。這OpenFOAM簡直就是一個大的知識庫。 知識太多了。
再看下面這個。之前OpenFOAM里面有一個操作,就是fvc & 這一行。后來全部改成了flux()函數(shù)。
那為啥這么改呢?
OpenFOAM說通過dotInterpolate()函數(shù)可以減少內(nèi)存占用。
在這里我不會做詳細的介紹了。不做OpenFOAM的老鐵們早就懵掉了。
總之,就是簡單舉例。類似的編程/算法處理。OpenFOAM這30多年一直在更新。
是的,就是為了提高速度、增加穩(wěn)定性,OpenFOAM搞了30多年。
我們說要做一個CFD軟件。不是做個教育版本。而是要寫出來一個:工業(yè)界能用的CFD軟件
當然了。我看到過很多教育版本的CFD軟件。人家直接就說了。我們這個CFD軟件主要就是教育意義。
教育版本與工程應(yīng)用那個區(qū)別是非常大的。教育版本的CFD軟件應(yīng)該是碩士生課程的大作業(yè)。
你們覺得,寫出來一個可以用在工業(yè)界的CFD軟件,容易么?
-
CFD
+關(guān)注
關(guān)注
1文章
121瀏覽量
18494 -
cfd軟件
+關(guān)注
關(guān)注
0文章
3瀏覽量
5534
發(fā)布評論請先 登錄
相關(guān)推薦
基于CFD領(lǐng)域的GPU加速設(shè)計解決方案
計算流體力學(xué)(CFD)的通用軟件
電源行業(yè)是個很容易被他人山寨的行業(yè)?
為什么我的AD軟件很容易死掉呢?
自己寫的一個常用的工具小軟件,歡迎使用!
不懂技術(shù)的人不要對懂技術(shù)的人說這很容易實現(xiàn)
CFD軟件開發(fā)的三個階段
![<b class='flag-5'>CFD</b><b class='flag-5'>軟件</b>開發(fā)的三<b class='flag-5'>個</b>階段](https://file.elecfans.com/web2/M00/49/B6/pYYBAGKhvFOAFS1IAAAVgJUiPwY541.jpg)
評論